Влияют ли столбцы со значением NULL на производительность Microsoft SQL Server? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть таблица данных с более чем 200 столбцами, однако в более чем половине этих столбцов большинство моих данных имеет значение NULL.

Уменьшают ли эти значения NULL производительность моего SQLСервер или поля со значениями NULL не имеют значения для всех действий с данными?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Производительность таблицы в основном является функцией ввода / вывода.То, как SQL Server размещает строки на страницах данных, означает, что значения NULL могут занимать или не занимать пространство - в зависимости от базового типа данных.Страницы данных SQL Server содержат список битов обнуляемости для каждого столбца (даже NOT NULL столбцы) для хранения информации NULL.

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

Как это влияет на производительность?Если у вас есть 200 целочисленных полей NULL, то это 800 байт на странице данных.Это ограничивает количество записей, хранящихся на данной странице, не более 10 записей.Итак, если вы хотите прочитать 100 записей, запрос должен прочитать (как минимум) 10 страниц данных.Если в таблице не было этих столбцов, то она могла бы прочитать только одну страницу данных.

Важно ли это для данного запроса или набора запросов, зависит от запросов.Но да, столбцы с NULL могут повлиять на производительность, особенно в части запросов ввода / вывода.

0 голосов
/ 12 декабря 2018

Кроме того, что они занимают мало места и как мало влияют на производительность, они не оказывают никакого другого влияния.

...