/ / MS SQL Index ordem de classificação da coluna é importante? - servidor sql, indexação

A ordem de classificação da coluna MS SQL Index é importante? - servidor sql, indexação

Eu tenho um banco de dados onde eu corro profiler econsultor de banco de dados para melhorar o desempenho do banco de dados. Eu fiz e até agora tudo bem, o consultor me apresentou muitos índices e estatísticas que podem ser criados para obter melhor desempenho. Mas, lendo as declarações, me deparei com isso:

CREATE NONCLUSTERED INDEX [_dta_index_xinfobaseacl_11_397426127__K3_K7_K1_K5] ON [dbo].[xinfobaseacl]
(
[lviewid] ASC,
[lparentid] ASC,
[lid] ASC,
[xlactor] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
go

CREATE NONCLUSTERED INDEX [_dta_index_xinfobaseacl_11_397426127__K7_K5_K1_K3] ON [dbo].[xinfobaseacl]
(
[lparentid] ASC,
[xlactor] ASC,
[lid] ASC,
[lviewid] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
go

Mesma tabela, mesmas colunas, mesmos parâmetros, apenas outra ordem de classificação das colunas ...

Então, eu estou confuso, a ordem de classificação realmente importa na criação do índice ???

Respostas:

2 para resposta № 1

Sim, a ordem das colunas em um índice composto é importante.

Ambos funcionarão igualmente bem para um predicado de igualdade nas 4 colunas.

Mas o primeiro também oferece suporte a consultas como

WHERE lviewid =  1 AND lparentid 1 AND lid = 1
ORDER BY xlactor

E o segundo suportará consultas como

WHERE parentid =  1 AND xlactor = 1
ORDER BY lid, xlactor

A criação ou não de ambos os índices depende da sua carga de trabalho. Você alimentou o DTA com uma carga de trabalho representativa, incluindo instruções de modificação de dados?


1 para resposta № 2

Você está confundindo terminologias. A ordem de classificação não afeta muito, se houver, mas a ordem das colunas no índice pode ser importante.

A ordem correta das colunas para um índice composto depende da sua consulta, mas como regra geral, a coluna com o menor número de valores diferentes deve ser a primeira.