Ser man på alle de involverede felter, vil et dækkende indeks på hver tabel involvere maj-kolonner
t1: Y, F, H, A
t2: X, G, C, D, E
Hvor selektive er NOGEN af kriterierne:t2.X, t2.G eller t1.Y, t1.F, t1.H ?
Hvis ingen af de individuelle kolonner er selektive nok (ideelt set 0,5 % eller mindre), vil du måske oprette et eller flere dækkende indeks, der involverer flere kolonner, for eksempel
t2 (G, X)
t1 (H, F, Y)
Bemærk: Rækkefølgen af kolonner i et indeks er meget vigtig - sæt altid den mest selektive (den, der deler kolonnedataene op i de mest distinkte sæt) først.
På bekostning af opbevaring kan du få indekset til at DÆKKE forespørgslen ved at angive alle de nødvendige kolonner i selve indekset. Det betyder, at forespørgslen slet ikke behøver at gå tilbage til tabeldata.
create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)
REDIGER
Det ser ud til, at jeg smuttede en SQL Server DDL derind. I Oracle ville du skulle udvide indekset til at blive t2 (G,X, C,D,E) - men det øger selektivitetskravene til indeksbrug, da indeksnøglen bliver meget lang.