Um NONCLUSTERED INDEX não utilizado ainda pode aumentar a velocidade da consulta?


13

Esta é uma situação estranha, mas espero que alguém tenha uma resposta.

Durante alguma solução de problemas de desempenho, adicionamos um NONCLUSTERED INDEX a uma tabela, conforme solicitado por sp_BlitzIndex. Verificamos seu uso no dia seguinte e ele mostrou 0 leituras ( 0 varreduras / pesquisas, 0 pesquisas singleton ) e, por isso, a desativamos.

No minuto seguinte, recebemos uma reclamação da mesma lentidão do aplicativo (problema de desempenho) que estávamos tentando verificar e resolver em primeiro lugar, quando adicionamos o INDEX.

Agora, eu sei, em teoria, isso parece pura coincidência. O ÍNDICE foi provada, mensurável, NÃO USADO . Desativá-lo NÃO DEVE ter causado degradação no desempenho da consulta. Mas é quase coincidência demais .

Questão

Então, minha pergunta, simplesmente, é assim:

É possível que um índice não exclusivo, cujas estatísticas de uso (das DMVs / sp_BlitzIndex) não mostrem uso, ainda esteja ajudando o desempenho da consulta de alguma forma na tabela afetada?


PS: Por favor, me poupe o proverbial "Vá testá-lo!" resposta; Preciso esperar até amanhã para testá-lo, porque a tabela é muito usada e o índice não será reativado (reconstruído) até a janela de manutenção noturna. E a natureza dos problemas de desempenho tem sido esporádica e difícil de reproduzir de qualquer maneira; Não estou dizendo "Não, não vou testá-lo", estou dizendo que sei que temos que testar e planejar, mas estou pedindo teoria e / ou conhecimento experimental.
NateJ

1
Você pode achar este post útil; brentozar.com/archive/2016/11/…
Rich Benner

Respostas:


13

Sim, poderia, quando o SQL Server decide que as estatísticas desse índice são mais precisas / úteis e usa essas estatísticas para fazer as estimativas e elaborar um plano.

Me deparei com situações em que o SQL Server decidiu usar estatísticas de um índice e verificar / buscar outro índice.

Editar - Isso pode não ser aplicável, porque acabei de perceber que você desabilitou o índice. Eu não testei esse cenário.


Obrigado pela resposta clara e concisa! Sim, não, ele não foi desativado imediatamente, foi ativado e "totalmente ativo" até que eu o desativei segundos antes da reclamação do usuário / desaceleração do desempenho. Você é bom :)
NateJ

1
@NateJ Essa teoria pode ser testada em CREATE STATISTICSvez de CREATE INDEX.
Jakub Kania
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.