Индексы и NULL
Индексы на основе В*-дерева, кроме индекса кластера, не содержат записей для NULL, а индексы на основе битовых карт и индекс кластера - имеют.
Чтобы запрос select * from T where x is null; использовал индекс нужно, чтобы хотя бы один столбец в индексе имел ограничение NOT NULL.
Например:
Индексы на основе В*-дерева, кроме индекса кластера, не содержат записей для NULL, а индексы на основе битовых карт и индекс кластера - имеют.
Чтобы запрос select * from T where x is null; использовал индекс нужно, чтобы хотя бы один столбец в индексе имел ограничение NOT NULL.
Например:
-- создаём таблицу
create table t (x int, у int NOT NULL);
-- создаём индекс
create unique index t_idx on t(x,y);
-- выполняем запрос, он будет использовать индекс, т.к. у int NOT NULL
select * from t where x is null;
create table t (x int, у int NOT NULL);
-- создаём индекс
create unique index t_idx on t(x,y);
-- выполняем запрос, он будет использовать индекс, т.к. у int NOT NULL
select * from t where x is null;