2010-05-15 6 views
7

Кажется, что многие люди произвольно назначают большие размеры полям первичного/внешнего ключа в своих схемах MySQL, таких как INT (11) и даже BIGINT (20), которые использует WordPress.Размер первичного/внешнего ключа MySQL?

Теперь исправьте меня, если я ошибаюсь, но даже INT (4) будет поддерживать (без знака) значения до более чем 4 миллиардов. Измените его на INT (5), и вы допустите значения до квадриллиона, что больше, чем вам когда-либо понадобится, если вы, возможно, не храните геоданные в NASA/Google, и я уверен, что большинство из нас этого не делают.

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

+1

Нет, поле размера содержит символы, а не двоичные байты. Таким образом, int (4) может вмещать до 9999 (теоретически, база данных может хранить ее внутренне как больше). INT (11) на самом деле просто 32-битное число. – MarkR

ответ

10

Размер не равен ни битам, ни байтам. Это только ширина экрана, то есть используется, когда поле имеет ZEROFILL .

и

INT [(М)] [UNSIGNED] [ZEROFILL] нормального размера целое число. Подписанный диапазон является -2147483648 до 2147483647. беззнаковое диапазон составляет от 0 до 4294967295.

См this explanation.

0

Я не вижу веских оснований использовать число, превышающее 32-разрядное целое, для индексирования данных в обычных бизнес-размерах баз данных. У большинства из них есть миллионы записей (или того порядка).

+0

Также не MySQL. Они используют 32-битные целые числа для типа данных INT. Число in() не влияет на количество бит. –

Смежные вопросы