Извините, что это не прямой ответ на ваш вопрос, но я думаю, что на это нужно обратить внимание. Я думаю, что вы, возможно, неправильно поняли назначение целого числа в скобках после типа столбца.
Для VARCHAR
типов, как вы, вероятно, уже знаете, он ограничивает максимальную длину. Однако это не влияет на количество байтов, используемых для хранения конкретной строки. Для строки длиной 5 потребуется одинаковое количество байтов, независимо от того, хранится ли она в VARCHAR(100)
или VARCHAR(200)
.
Для целочисленных типов число не имеет никакого отношения к количеству байтов памяти. Это ширина дисплея, а это нечто другое. См. руководство :
Другое расширение поддерживается MySQL для необязательного указания ширины отображения целочисленных типов данных в скобках после ключевого слова base для типа (например, INT (4)). Эта необязательная ширина отображения может использоваться приложениями для отображения целочисленных значений, ширина которых меньше ширины, указанной для столбца, путем добавления их слева с пробелами. (То есть эта ширина присутствует в метаданных, возвращаемых с наборами результатов. Независимо от того, используется она или нет, зависит от приложения.)
Ширина отображения не ограничивает диапазон значений, которые могут быть сохранены в столбце, ни количество цифр, отображаемых для значений, ширина которых превышает указанную для столбца.