Sloupce klíče indexu jsou součástí b-stromu indexu. Zahrnuté sloupce nejsou.
Vezměte dva indexy:
CREATE INDEX index1 ON table1 (col1, col2, col3)
CREATE INDEX index2 ON table1 (col1) INCLUDE (col2, col3)
index1
je pro tento druh dotazu vhodnější:
SELECT * FROM table1 WHERE col1 = x AND col2 = y AND col3 = z
Zatímco index2
je pro tento druh dotazu vhodnější:
SELECT col2, col3 FROM table1 WHERE col1 = x
V prvním dotazu index1
poskytuje mechanismus pro rychlou identifikaci řádků zájmu. Dotaz se (pravděpodobně) spustí jako hledání indexu, po kterém bude následovat vyhledání záložek pro načtení celých řádků.
Ve druhém dotazu index2
funguje jako krycí index. SQL Server vůbec nemusí zasáhnout základní tabulku, protože index poskytuje všechna data, která potřebuje ke splnění dotazu. index1
může v tomto případě fungovat také jako krycí index.
Pokud chcete krycí index, ale nechcete do b-stromu přidat všechny sloupce, protože v nich nehledáte, nebo nemůžete, protože nejsou povoleným datovým typem (např. XML), použijte Klauzule INCLUDE.