Dies ist eine seltsame Situation, aber ich hoffe, dass jemand eine Antwort hat.
Bei einigen Leistungsproblemen haben wir einer Tabelle einen NONCLUSTERED INDEX hinzugefügt, wie von angefordert sp_BlitzIndex
. Wir haben die Verwendung am nächsten Tag überprüft und es wurden 0 Lesevorgänge ( 0 Scans / Suchvorgänge, 0 Singleton-Suchvorgänge ) angezeigt , sodass wir sie deaktiviert haben.
In der nächsten Minute erhalten wir eine Beschwerde über die gleiche App-Verlangsamung (Leistungsstörung), die wir beim Hinzufügen des INDEX zuerst auschecken und beheben wollten.
Nun, ich weiß theoretisch, das klingt rein zufällig. Der INDEX wurde nachweislich, messbar, NICHT VERWENDET . Das Deaktivieren DARF KEINE Beeinträchtigung der Abfrageleistung verursacht haben. Aber es ist fast ZU zufällig.
Frage
Meine Frage lautet also ganz einfach:
Ist es überhaupt möglich , dass ein nicht gruppierten Index, deren nutzungs Statistiken (aus der DMVs / sp_BlitzIndex
) NO - Nutzung zeigt, wurde noch helfen , die Abfrageleistung irgendwie auf der betroffenen Tabelle?
Antworten:
Ja, wenn SQL Server entscheidet, dass die Statistiken aus diesem Index genauer / nützlicher sind, und diese Statistiken verwendet, um die Schätzungen vorzunehmen und einen Plan zu erstellen.
Ich bin auf Situationen gestoßen, in denen SQL Server beschlossen hat, Statistiken aus einem Index zu verwenden und einen anderen Index zu scannen / zu suchen.
Bearbeiten - Dies trifft möglicherweise nicht zu, da ich gerade festgestellt habe, dass Sie den Index deaktiviert haben. Ich habe dieses Szenario nicht getestet.
quelle
CREATE STATISTICS
anstelle von getestet werdenCREATE INDEX
.