Podíváme-li se na všechna zúčastněná pole, krycí rejstřík každé tabulky by zahrnoval mnoho sloupců
t1: Y, F, H, A
t2: X, G, C, D, E
Jak selektivní jsou JAKÉKOLI z kritérií:t2.X, t2.G nebo t1.Y, t1.F, t1.H?
Pokud žádný z jednotlivých sloupců není dostatečně selektivní (ideálně 0,5 % nebo méně), možná budete chtít vytvořit jeden nebo několik krycích indexů, které zahrnují více sloupců, například
t2 (G, X)
t1 (H, F, Y)
Poznámka: Pořadí sloupců v indexu je velmi důležité – vždy dávejte na první místo ten nejselektivnější (ten, který rozděluje data sloupců do nejodlišnějších sad).
Na úkor úložiště můžete zajistit, aby index POKRYTAL dotaz, a to poskytnutím všech nezbytných sloupců v samotném indexu. To znamená, že dotaz se vůbec nemusí vracet k datům tabulky.
create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)
UPRAVIT
Vypadá to, že jsem tam vložil SQL Server DDL. V Oracle byste museli index rozšířit na t2 (G,X, C,D,E) – ale to zvyšuje požadavky na selektivitu pro použití indexu, protože indexový klíč je velmi dlouhý.