Таблицы базы данных MySQL с полями идентификатора SMALLINT - PullRequest
0 голосов
/ 13 марта 2011

В настоящее время в моей базе данных MySQL есть несколько таблиц, в которых я объявляю поле id типа SMALLINT(6) (верно ли это, так как SMALLINT идет только к 65535 [длина 5]). Я прочитал здесь в целочисленных типах, что, когда он равен UNSIGNED, диапазон увеличивается положительно до 65535. Как это повлияет на мою базу данных, если я специально изменю атрибуты поля id на UNSIGNED? Также есть ли проблемы при переходе с SMALLINT на MEDIUMINT?

Мой тип базы данных MyISAM .

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Вы можете переключиться с SMALLINT на MEDIUMINT - данные не будут потеряны.

Обычное целое число в MySQL может быть любым числом между нижним пределом и верхним пределом. С целым числом со знаком нижний предел является отрицательным числом, а верхний - положительным числом. Значение SMALLINT, подписанное, может быть между -32768 и 32767. Целое число без знака, однако, является только положительным. Нижний предел равен нулю, а верхний предел равен 65535.

Я обычно использую INT для идентификаторов, хотя. Я бы предпочел, чтобы верхний предел для поля идентификатора был настолько высоким, что его никогда не достичь.

0 голосов
/ 13 марта 2011

Основная проблема с использованием типов UNSIGNED заключается в том, что если вы когда-либо выполните какую-либо арифметику, которая приводит к отрицательному числу, вы получите вместо этого большое число.Однако для идентификаторов это вряд ли является проблемой, и я часто использую их, чтобы немного уменьшить использование памяти.

Я не могу думать о каких-либо проблемах с использованием SMALLINT с последующим изменением на MEDIUMINTпотому что расширение типа данных обычно не вызывает проблем.

...