MySQL: сколько места использует поле NULL?

Сохраняет ли база данных NULL память по сравнению с ее обычным размером?

2 ответа

Это обсуждается в главе руководства MySQL " Требования к хранилищу". Там нет простого ответа; это зависит от типа данных столбца, индексируется ли столбец; и двигатель хранения. Влияние использования NULL для столбца может варьироваться от нуля до нескольких байтов (в зависимости от того, сколько других столбцов также поддерживает NULL).

Влияние хранения объявления столбца как принимающего NULL и фактического хранения значения NULL, вероятно, незначительно. Наличие столбца с большим количеством значений NULL часто указывает на необходимость (дальнейшей) нормализации.

Основное правило заключается в том, чтобы проектировать схему на основе свойств данных, а не влияния хранилища. Исправляйте вещи, только если они окажутся проблемой.

Если вы установите поле как not null в MyISAM это займет меньше места.
Настройка для принятия null заставит это занять больше места в MyISAM.

InnoDB null значения занимают меньше места, поэтому они могут работать там.

Если вы используете поле BLOB-объектов, MySQL все равно сохранит его в другом файле.

В качестве альтернативы (моя рекомендация)
Другой вариант - не добавлять поле в эту таблицу, а сделать

table extra_data
   id integer primary key
   big_table_id integer
   large_data_seldom_used varchar(65000)

Если вам нужно выбрать дополнительные данные, сделайте:

SELECT large_data_seldom_used FROM bigtable b
INNER JOIN extra_data e ON (e.big_table_id = b.id)

Таким образом, вам вообще не нужно добавлять дополнительное поле в bigtable, экономя много места, если extra_field используется редко.

Кроме того, хотя самому NULL не требуется никакого пространства для хранения, NDBCLUSTER резервирует 4 байта на строку, если определение таблицы содержит какие-либо столбцы, определенные как NULL, до 32 столбцов NULL. (Если таблица кластеров NDB определена с более чем 32 столбцами NULL и 64 столбцами NULL, то зарезервировано 8 байтов на строку.)

Другие вопросы по тегам