sql >> Databáze >  >> RDS >> Sqlserver

Klíčový sloupec indexu VS sloupec Zahrnutý index

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.



  1. Rozbalovací nabídka přístupu TreeView ImageCombo

  2. Maximum průměrů

  3. Postgresql, aktualizujte nebo vložte podle velikosti písmen

  4. Postgres upsert:rozlišujte mezi novými a aktualizovanými řádky