Indeksy na kolumnach z wartościami nullowymi cz. 2

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.

One thought on “Indeksy na kolumnach z wartościami nullowymi cz. 2

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.