Создание уникального первичного ключа и сохранение его как 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 — его максимальный диапазон 2147483647. . Если указанная выше функция генерирует уникальный идентификатор 9999999999, то он не будет сохранен в таблице.
  • Сохраните идентификатор пользователя как Int(9): Максимальное сгенерированное число может храниться до 999999999. Однако приведенной выше функции придется несколько раз выполнять поиск в таблице, чтобы убедиться, что это число уникально.
  • Сохранить идентификатор пользователя как Bigint(10): это решит проблему хранения уникального номера. Но возникает проблема из-за производительности Bigint по сравнению с Int в качестве первичного ключа.
Пожалуйста, предложите, подходит ли подход к созданию уникальных идентификатор пользователя в порядке. Как лучше всего хранить этот 10-значный идентификатор пользователя. Спасибо.

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

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

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

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

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

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

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