C'est une situation étrange, mais j'espère que quelqu'un aura une réponse.
Au cours de certains problèmes de performances, nous avons ajouté un INDEX NON CLUSTERED à une table, comme demandé par sp_BlitzIndex
. Nous avons vérifié son utilisation le lendemain, et il a montré 0 lectures ( 0 analyses / recherches, 0 recherches singleton ), nous l'avons donc désactivé.
La minute suivante, nous recevons une plainte de la même lenteur d'application (problème de performance) que nous essayions de vérifier et de résoudre en premier lieu lorsque nous avons ajouté l'INDEX.
Maintenant, je sais qu'en théorie, cela semble purement fortuit. L'INDEX était prouvablement, mesurablement, NON UTILISÉ . La désactiver NE DEVRAIT PAS avoir entraîné une dégradation des performances des requêtes. Mais c'est presque TROP coïncidence.
Question
Donc, ma question, tout simplement, est la suivante:
Est-il possible , qu'un INDEX NON CLUSTERED, dont les statistiques d'utilisation (à partir des DMV / sp_BlitzIndex
) n'indiquent AUCUNE utilisation, ait encore aidé les performances de requête d'une manière ou d'une autre sur la table affectée?
Réponses:
Oui, c'est possible, lorsque SQL Server décide que les statistiques de cet index sont plus précises / utiles et utilise ces statistiques pour faire des estimations et élaborer un plan.
Je suis tombé sur des situations où SQL Server a décidé d'utiliser les statistiques d'un index et d'analyser / rechercher un autre index.
Modifier - Cela pourrait ne pas être applicable car je viens de réaliser que vous avez désactivé l'index. Je n'ai pas testé ce scénario.
la source
CREATE STATISTICS
au lieu deCREATE INDEX
.