Jest jeszcze jeden sposób indeksowania, który pozwala nam na bardzo wygodne korzystanie z indeksów i wyszukiwanie wartości nullowych.
Mianowicie indeks jest prostym indeksem składającym się z dwóch kolumn – tej po której chcemy wyszukiwać i wartości stałej.
Np:
create index kolumna_IDX on tabela (kolumna, TO_DATE(‘4000-01-01’, ‘yyyy-mm-dd’));
i wtedy możemy pisać zapytania:
select * from tabela where kolumna is null
i indeks zadziała!
——————————————————————————————————–
Zrobiłam też porównanie dla tabeli, gdzie stosunek ilości nullowych wierszy do wszystkich w tabeli wynosi: 1.002/131.002
I założyłam indeks
create index AA2_IDX on AAAAA2_TEST (NVL(MODIFY_DATE,TO_DATE(‘4000-01-01’, ‘yyyy-mm-dd’)))
Koszt zapytania:
select COUNT(*) from aaaaa2_test WHERE NVL(modify_DATE,TO_DATE(‘4000-01-01’, ‘syyyy-mm-dd’)) = TO_DATE(‘4000-01-01’, ‘syyyy-mm-dd’)
wyniósł 38
zaś dla indeksu:
create index AA_IDX on AAAAA2_TEST (FROM_DATE, TO_DATE(‘4000-01-01’, ‘yyyy-mm-dd’))
i zapytania:
select COUNT(*) from aaaaa2_test WHERE FROM_DATE IS NULL
wyniósł 28.
Dla większej ilości nullowych rekordów tzn. 11002/131.002 stosunek kosztów wyniósł 43/28, a więc znów zdecydowanie na korzyść indeksu dwukolumnowego.
Hello World