@nooclik

Что означает длина поля int?

Возник вопрос о последствиях превышения длины поля, к примеру возьмем поле id primary key, длина 11, тип таблицы InnoDB, что должно произойти? В качестве эксперимента создал таблицу, установил длину поля 1 для id, начал добавлять записи, по сути после значения 9 должно что-то произойти, но значение пошло далее расти - 10, 11... (что имеет длину 2, т.е. превысили указанное). Получается длина поля влияет только на занимаемую память, но никак не на его значения?
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fockker
@Fockker
Потомок старинного рода Ипатьевых-Колотитьевых
Размер, указываемый для поля типа int, не влияет на значения. И - как следствие - не влияет и на занимаемую память. Непонятно, с чего вы решили обратное.
Если поле типа int(1) позволяет сохранить значение 4294967295, то естественно, что и памяти оно будет занимать те же 4 байта, что и int(10)

Цифра эта ни на что не влияет, и имеет скорее декоративное значение.
Если хотите сократить память/предельное значение, то используйте другой тип поля -
TINYINT занимает 1 байт, до 255
SMALLINT занимает 2 байта, до 65535
MEDIUMINT - 3 байта, до 16777215
Ответ написан
@TheAndrey7
По умолчанию лучше ставить максимальную длину поля, то есть его не ограничивать. На расход памяти это никак не влияет. Значение это начнёт иметь только когда вы будете делать индекс по полю. Чаще такое с varchar может встретиться, если индекс будет из нескольких полей такого типа - придётся ограничивать длину их значений, чтобы вместилось это всё в сумме в индекс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы