Patrząc na wszystkie zaangażowane pola, indeks pokrywający w każdej tabeli obejmowałby wiele kolumn
t1: Y, F, H, A
t2: X, G, C, D, E
Jak selektywne są DOWOLNE z kryteriów:t2.X, t2.G lub t1.Y, t1.F, t1.H?
Jeśli żadna z poszczególnych kolumn nie jest wystarczająco selektywna (najlepiej 0,5% lub mniej), możesz na przykład utworzyć jeden lub kilka indeksów obejmujących wiele kolumn
t2 (G, X)
t1 (H, F, Y)
Uwaga: Kolejność kolumn w indeksie jest bardzo ważna – zawsze umieszczaj na początku najbardziej selektywne (ten, który dzieli dane w kolumnach na najbardziej odrębne zestawy).
Kosztem przechowywania można sprawić, by indeks pokrywał zapytanie, podając wszystkie niezbędne kolumny w samym indeksie. Oznacza to, że zapytanie w ogóle nie musi wracać do danych tabeli.
create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)
EDYTUJ
Wygląda na to, że wsunąłem tam SQL Server DDL. W Oracle musiałbyś rozwinąć indeks, aby stał się t2 (G,X, C,D,E) - ale to zwiększa wymagania dotyczące selektywności użycia indeksu, ponieważ klucz indeksu staje się bardzo długi.