Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Coluna de chave de índice VS Coluna incluída de índice


As colunas de chave de índice fazem parte da árvore b do índice. As colunas incluídas não são.

Pegue dois índices:
CREATE INDEX index1 ON table1 (col1, col2, col3)
CREATE INDEX index2 ON table1 (col1) INCLUDE (col2, col3)

index1 é mais adequado para esse tipo de consulta:
SELECT * FROM table1 WHERE col1 = x AND col2 = y AND col3 = z

Considerando que index2 é mais adequado para esse tipo de consulta:
SELECT col2, col3 FROM table1 WHERE col1 = x

Na primeira consulta, index1 fornece um mecanismo para identificar rapidamente as linhas de interesse. A consulta (provavelmente) será executada como uma busca de índice, seguida por uma pesquisa de marcador para recuperar a(s) linha(s) completa(s).

Na segunda consulta, index2 funciona como um índice de cobertura. O SQL Server não precisa atingir a tabela base, pois o índice fornece todos os dados necessários para satisfazer a consulta. index1 também poderia atuar como um índice de cobertura neste caso.

Se você deseja um índice de cobertura, mas não deseja adicionar todas as colunas à b-tree porque não as procura, ou não pode porque elas não são um tipo de dados permitido (por exemplo, XML), use o cláusula INCLUIR.