Тип столбца первичного ключа MySQL для больших таблиц - PullRequest
7 голосов
/ 03 мая 2009

Я работаю над проектом с относительно большой таблицей БД ( 700K строк ).

Ошибка, которую я допустил при разработке схемы БД. Когда строки увеличивались, мне приходилось увеличивать тип столбца ID bigint ( x ).

Теперь это bigint (44). Я боюсь устанавливать высокое значение x, потому что я думал, что это может значительно снизить производительность. Может быть я не прав ..

Пожалуйста, помогите мне в решении проблемы.

Какой тип столбца можно установить один раз и забыть об этой проблеме?

Что мне лучше узнать в области проектирования схем БД?

Ответы [ 2 ]

14 голосов
/ 03 мая 2009

Когда вы создаете столбец как BIGINT(44), «44» - это ширина экрана - она ​​не влияет на диапазон значений, которые вы можете сохранить, или скорость, с которой они извлекаются.

Для автоматического увеличения идентификатора вы хотите использовать UNSIGNED число, например BIGINT(44) UNSIGNED. Это удвоит диапазон значений и добавит дополнительное ограничение, что, как правило, хорошо.

Неподписанный INT будет хранить до 4 294 967 295 Неподписанный BIGINT будет хранить до 18,446,744,073,709,551,615 - вы не собираетесь заполнять это в ближайшее время.

Вы не говорите, насколько быстро растет ваш максимальный идентификатор - если вы не вставляете много строк, вам следует придерживаться UNSIGNED INT, так как это занимает меньше места.

1 голос
/ 06 августа 2010

Я думаю, что любой первичный ключ будет без знака по умолчанию. В любом случае, использование отрицательных чисел для первичных ключей не одобряется в лучшем случае и ломает вещи.

...