Создание уникального первичного ключа и сохранение его как int или bigint [дубликат]MySql

Форум по Mysql
Ответить Пред. темаСлед. тема
Anonymous
 Создание уникального первичного ключа и сохранение его как int или bigint [дубликат]

Сообщение Anonymous »

В приложении мы создаем уникальный идентификатор пользователя из 10 цифр следующим образом.

Код: Выделить всё

function random_number($length) { // Creates random number
$original_string = array_merge(range(0,11));
$original_string = implode("", $original_string);
return substr(str_shuffle($original_string), 0, $length);
}

function unique_user_id() {   //Check if number is unique from database
$user_id = random_number(10);
$query = "Select count(*) from users where user_id=?";
...
if($row[0] !=0) { unique_user_id();}
else {return $user_id;}
}

Этот 10-значный идентификатор пользователя может храниться в формате int или bigint. Это три возможных сценария.
  • Сохранение идентификатора пользователя как int(10): проблема с сохранением 10-значного идентификатора пользователя как int — его максимальный диапазон 2. 147 483 647. Если вышеуказанная функция генерирует уникальный идентификатор 9 999 999 999, то он не будет сохранен в таблице.
  • Сохранить идентификатор пользователя как int(9): он может хранить максимальное сгенерированное число до 999 999 999. Однако приведенной выше функции придется несколько раз искать таблицу, чтобы убедиться, что это число уникально.
  • Сохранять идентификатор пользователя как bigint(10): это решит проблему хранения уникального номера. Но возникает проблема из-за производительности bigint по сравнению с int в качестве первичного ключа.
Подход к созданию уникального идентификатора пользователя хорошо?
Как лучше всего хранить этот 10-значный идентификатор пользователя?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -or-bigint
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «MySql»