Короткий ответ: (4)
ничего не значит для INT
.
ответ займет слишком много:
Колонка размеры влияние на размер строк, который влияет на размер таблицы, который влияет на скорость запросов. Но ...
Если таблица «маленькая», разница в производительности будет очень небольшой.
Если таблица больше, чем может быть кэширована в ОЗУ, то разница может быть значительной - потому что вы, вероятно, будете связаны с I/O. В некоторых ситуациях это десятикратное замедление.
Для того, чтобы сжать в INT
, который является 4 байта всегда, переключиться на TINYINT UNSIGNED
(1 байт, диапазон: 0..255), SMALLINT UNSIGNED
(2 байта, 0..65K), или MEDIUMINT UNSIGNED
(3 байта , 0,16М).
Предполагая, что grade
- 0..100, тогда TINYINT
(подписанный или неподписанный) является оптимальным.
Между тем, вы можете изменить свое изменение id
.
единственной целью из INT(4)
в сочетании с ZEROFILL
, где вы хотите, чтобы отобразить 12, как 0012
. Это очень редко.
Не используйте CHAR
, если строки действительно не являются Фиксированная длина строк. И тогда он, вероятно, должен быть явно объявлен CHARACTER SET ascii
, потому что это шестнадцатеричный, все цифры или двухбуквенный country_code (и т. Д.). Во всяком случае, utf8 переполнен.
Предполагая, что вы используете InnoDB, то «вторичный» INDEX(grade)
неявно включают PRIMARY KEY(id)
. Таким образом, размер каждой записи индекса - это размер grade
плюс размер id
плюс куча накладных расходов. Предполагая, что нормальные классы и не более 65 тыс. Студентов, вы можете использовать 3 байта вместо оригинала 8. Но таблица небольшая, поэтому вы вряд ли будете связаны с I/O-привязкой. Следовательно, небольшие накладные расходы для 8 вместо 3.
'int (4)' ничего не сделает, кроме как превратить прекрасно используемое поле 'int' в непригодную для использования информацию. Миллионы рядов не очень большие, он находится в диапазоне мелко-иш. Производительность базы данных будет определяться скоростью вашей подсистемы ввода-вывода и ЦП, а не сбрасыванием байта или двух здесь и там. Базы данных предназначены для хранения данных и их использования, разработка базы данных для повышения производительности за счет снижения полезности ее полей - неправильное использование инструмента. Вы оптимизируете не то место, особенно если вы планируете использовать один сервер для своей БД. –