Als we naar alle betrokken velden kijken, zou een dekkingsindex op elke tabel kunnen bestaan uit meerdere kolommen
t1: Y, F, H, A
t2: X, G, C, D, E
Hoe selectief zijn ELK van de criteria:t2.X, t2.G of t1.Y, t1.F, t1.H ?
Als geen van de afzonderlijke kolommen selectief genoeg is (idealiter 0,5% of minder), wilt u misschien een of meerdere dekkingsindexen maken met meerdere kolommen, bijvoorbeeld
t2 (G, X)
t1 (H, F, Y)
Opmerking: De volgorde van kolommen in een index is erg belangrijk - zet altijd eerst de meest selectieve (degene die de kolomgegevens in de meest verschillende sets verdeelt).
Ten koste van de opslag kunt u ervoor zorgen dat de index de query dekt door alle benodigde kolommen in de index zelf op te geven. Dit betekent dat de query helemaal niet terug hoeft te gaan naar tabelgegevens.
create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)
BEWERKEN
Het lijkt erop dat ik er een SQL Server DDL in heb gestopt. In Oracle zou je de index moeten uitbreiden om t2 (G,X, C,D,E) te worden - maar dat verhoogt de selectiviteitsvereisten voor indexgebruik omdat de indexsleutel erg lang wordt.