Oracle не хранит информацию о значениях NULL в нормальных (BTree) индексах.Таким образом, при запросе с использованием условия, подобного WHERE CKUBRA IS NULL
, ядро базы данных должно выполнить полное сканирование таблицы для генерации ответа.
Однако растровые индексы do хранят значения NULL, поэтому еслиЕсли вы хотите использовать индекс для поиска значений NULL, вы можете создать растровый индекс в соответствующих полях, например:
CREATE BITMAP INDEX KUBRA.TKUBRA_2
ON KUBRA.TKUBRA(CKUBRA);
После создания индекса не забудьте собрать статистику поtable:
BEGIN
DBMS_STATS.GATHER_TABLE_STATS('KUBRA', 'TKUBRA');
END;
Что может разрешить базе данных использовать индекс для поиска значений NULL, но следует помнить, что битовые индексы предназначены для приложений с низким уровнем обновления, таких как хранилища данных,и использование одного на транзакционной таблице (таблица, которая часто обновляется) может привести к проблемам с производительностью.
Тем не менее, с этим можно поиграть - и вы всегда можете его уронить позже.
Лучший изудачи.