Om man tittar på alla inblandade fält skulle ett täckande index på varje tabell involvera maj-kolumner
t1: Y, F, H, A
t2: X, G, C, D, E
Hur selektiva är NÅGRA av kriterierna:t2.X, t2.G eller t1.Y, t1.F, t1.H ?
Om ingen av de enskilda kolumnerna är tillräckligt selektiva (helst 0,5 % eller mindre) kanske du vill skapa ett eller flera täckande index som omfattar flera kolumner, till exempel
t2 (G, X)
t1 (H, F, Y)
Obs! Ordningen på kolumner i ett index är mycket viktig – sätt alltid den mest selektiva (den som delar upp kolumndata i de mest distinkta uppsättningarna) först.
På bekostnad av lagring kan du göra indexet COVER frågan genom att tillhandahålla alla nödvändiga kolumner i själva indexet. Det betyder att frågan inte alls behöver gå tillbaka till tabelldata.
create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)
REDIGERA
Det verkar som att jag stoppade in en SQL Server DDL där. I Oracle skulle du behöva utöka indexet för att bli t2 (G,X, C,D,E) - men det ökar selektivitetskraven för indexanvändning eftersom indexnyckeln blir väldigt lång.