Indeksy na kolumnach z wartościami nullowymi cz. 1

A tak dokładnie aby zadziałał, gdy chcemy zrobić zapytanie: select * from tablica where kolumna is null; Zakładamy wtedy indeks funkcyjny: create index kolumna_idx on tablica (NVL(kolumna,TO_DATE(‘ 4000-01-01’, ‘syyyy-mm-dd’))) I wtedy musimy tak konstruować zapytanie, aby mogło wykorzystać powyższy indeks: select * from tablica   where NVL(kolumna,TO_DATE(‘4000-01-01’, ‘syyyy-mm-dd’)) = TO_DATE(‘4000-01-01’, ‘syyyy-mm-dd’) Dla porównania koszt tradycyjnego zapytania: select count(*) from dh_monitor.events where valid_to is null    to

8122 dla porównania, zapytanie które wykorzystuje indeks ma koszt  3!!! select count(*) from  events where NVL(VALID_TO,TO_DATE(‘4000-01-01 ‘, ‘syyyy-mm-dd’)) = TO_DATE(‘4000-01-01’, ‘syyyy-mm-dd’) Dla tabeli, gdzie stosunek ilości nullowych wierszy do wszystkich w tabeli wynosi: 6.568/5.999.617

Leave a Reply

Your email address will not be published. Required fields are marked *

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