Чтобы предоставить закрываемый ответ:
Предложения определения раздела не допускают проверку IS NULL
.
Раздел должен быть либо задан одной отдельной и однозначно идентифицируемой строкой, либо (без знака) цифрой, либо закрытым диапазоном значений (см. здесь ).
Это отвечает на вопрос, возможно ли создать раздел для записей, где условие IS NULL
оценено как истинное: это не так.
Вторая часть ответа касается утверждения, что проверка для IS NULL
выполняется быстрее, чем проверка для определенного значения.
Это не совсем так. Хотя вы можете найти распределения данных, для которых проверка NULL
записей в определенном столбце может быть выполнена быстрее, чем сканирование всего основного сегмента этого столбца, это не является чем-то особенным для записи NULL
.
В зависимости от общего распределения отдельных значений в любом столбце (и во всех столбцах таблицы) SAP HANA сортирует и сжимает указатели идентификаторов значений в главном сегменте столбца.
Например, если большинство всех записей в столбце в настоящее время NULL
, что вполне может привести к сжатию, которое помещает все записи NULL
в самый верх и сжимает записи с RLE.
В этом случае общий поиск IS NULL
будет очень быстрым.
Аналогично, сжатие может измениться для других очень заметных значений этого столбца.
Единственное техническое различие в хранилище столбцов для NULL
s, о котором я знаю, заключается в том, что они имеют жестко запрограммированный и фиксированный идентификатор значения, так что поиск в словаре можно избежать, и все столбцы разделяют тот же идентификатор значения для NULL
записей. Поскольку поиск по словарю обычно не является узким местом в выполнении операторов, можно сказать, что идея «NULL is fast» неверна.