Подтвердить что ты не робот

Какой размер INT следует использовать для моего автоинкремента ids MySQL

В настоящее время мы используем INT (21) * для всех столбцов идентификатора автоинкремента в базе данных с более чем 30 таблицами.

Мы являемся сайтом блога и имеем таблицы, в которых хранятся участники, комментарии, сообщения в блогах и т.д.

Я уверен, что мы никогда не достигнем предела наших колонок INT (21) id и хотели бы знать:

  • Если вы используете INT (21), когда я уверен, что нам это не понадобится, это пустая трата пространства.
  • Если это пустая трата, то рекомендуемый размер для столбца идентификатора автоинкремента

* Не мой дизайн. Я спрашиваю об этом, потому что я рассматриваю возможность уменьшить это, чтобы сказать, INT (10).

4b9b3361

Ответ 1

Значение в скобках - это ширина экрана.

[It] может использоваться приложениями для отображения целочисленных значений, имеющих ширину, меньшую ширины, указанной для столбца, с помощью левого заполнения их пробелами. (То есть эта ширина присутствует в метаданных, возвращаемых с помощью наборов результатов. Используется ли она или нет до приложения.)

Ширина дисплея не ограничивает диапазон значений, которые могут быть сохранены в столбце, а также количество цифр, отображаемых для значений, имеющих ширину, превышающую ширину, указанную для столбца. Например, столбец, указанный как INT(3), имеет обычный диапазон INT от -2147483648 до 2147483647, а значения за пределами диапазона, разрешенного тремя символами, отображаются с использованием более трех символов.

Заключение

INT(10) или INT(21), не влияет на значения, которые могут быть сохранены. Если вы действительно беспокоитесь, тип данных можно легко изменить, чтобы быть BIGINT без каких-либо последствий, о которых я знаю. Я бы посмотрел, сколько новых записей создается за данный период (IE в месяц), и посмотрите, сколько времени потребуется, чтобы максимизировать значение INT на основе этой истории.

Ответ 2

См. здесь для ограничения каждого типа int: http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Обратите внимание, что INT(21) == INT(100000). Число в скобках - это то, сколько нулей добавлено к нему, если вы укажете, что поле должно быть нулевым.

В поле unsigned int может храниться до 4294967295 записей (см. ссылку выше).

Ответ 3

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