Тип столбца первичного ключа MySQL для больших таблиц

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

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

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

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

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

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


person user80805    schedule 03.05.2009    source источник


Ответы (2)


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

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

Неподписанный INT будет хранить до:

4,294,967,295

Неподписанный BIGINT будет хранить до:

18,446,744,073,709,551,615

вы не собираетесь заполнить это в ближайшее время.

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

person Greg    schedule 03.05.2009

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

person Everett    schedule 05.08.2010
comment
Не могли бы вы быть более конкретными? ломает вещи довольно расплывчато. Что именно ломается? - person Nobody; 30.08.2012