Производительность таблицы в основном является функцией ввода / вывода.То, как SQL Server размещает строки на страницах данных, означает, что значения NULL могут занимать или не занимать пространство - в зависимости от базового типа данных.Страницы данных SQL Server содержат список битов обнуляемости для каждого столбца (даже NOT NULL
столбцы) для хранения информации NULL
.
В строках переменной длины просто используются биты NULL
, поэтому они не занимают дополнительныхпространство в каждом ряду.Другие типы данных занимают место даже для значений NULL
(я полагаю, это включает строки фиксированной длины).
Как это влияет на производительность?Если у вас есть 200 целочисленных полей NULL, то это 800 байт на странице данных.Это ограничивает количество записей, хранящихся на данной странице, не более 10 записей.Итак, если вы хотите прочитать 100 записей, запрос должен прочитать (как минимум) 10 страниц данных.Если в таблице не было этих столбцов, то она могла бы прочитать только одну страницу данных.
Важно ли это для данного запроса или набора запросов, зависит от запросов.Но да, столбцы с NULL
могут повлиять на производительность, особенно в части запросов ввода / вывода.