Как NULL влияет на таблицы MySQL? (ЬшоВВ) - PullRequest
5 голосов
/ 08 января 2010

Недавно я подумал, стоит ли иметь 1 таблицу с большим количеством столбцов NULL или лучше иметь больше таблиц без NULL. Я слышал, что NULL не хранится в InnoDB, поэтому мне было интересно, есть ли какие-либо недостатки или проблемы с кучей строк с большим количеством NULL. Я всегда слышал, что обычные NULL плохие, но я так и не понял почему. Кстати, это будет NULL для внешних ключей, если это вообще имеет значение.

При втором сомнении возникает ли проблема с производительностью, когда я использую INNER JOIN для столбцов с большим значением NULL? Например, если у меня есть 4 внешних ключа, и я собираюсь сделать 4 ВНУТРЕННИХ СОЕДИНЕНИЯ, но, скорее всего, только 1 из них не равен NULL, это повлияет на производительность? Спасибо

Ответы [ 2 ]

6 голосов
/ 08 января 2010

См .:

NULL индексируются.

В InnoDB вы можете уменьшить требования к хранилищу для строки данных, используя NULL.

2 голосов
/ 31 января 2012

В книге Высокопроизводительный MySQL: оптимизация, резервное копирование, репликация и многое другое Барона Шварца, Питера Зайцева, Вадима Ткаченко, Джереми Заводного, Арьена Ленца и Дерека Дж. Баллинга, говорится в столбцах таблицы это позволяет NULL усложнить для MySQL оптимизацию запросов, которые ссылаются на обнуляемые столбцы. И когда индексируемый столбец с нулевым индексом индексируется, для каждой записи требуется дополнительный байт, что может привести к преобразованию индекса фиксированного размера (например, индекса по одному целочисленному столбцу) в индекс переменного размера в MyISAM. Они говорят, когда столбцы должны содержать пропущенное значение, чтобы использовать 0 для целых чисел, специальный символ или пустую строку. Избегайте NULL и NOT NULL, когда это возможно.

...