Kann ein nicht verwendeter NICHT ABGESCHLOSSENER INDEX die Abfragegeschwindigkeit noch erhöhen?


13

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?


PS: Bitte ersparen Sie mir das sprichwörtliche "Go test it!" Antwort; Ich muss bis morgen warten, um es zu testen, da die Tabelle stark ausgelastet ist und der Index bis zum nächtlichen Wartungsfenster nicht wieder aktiviert (neu erstellt) wird. Und die Art der Leistungsprobleme war sporadisch und ohnehin schwer zu reproduzieren. Ich sage nicht "Nein, ich werde es nicht testen", ich sage, ich weiß, wir müssen es testen und planen, aber ich frage nach Theorie und / oder Erfahrungswissen.
NateJ

1
Möglicherweise finden Sie diesen Blogeintrag hilfreich. brentozar.com/archive/2016/11/…
Rich Benner

Antworten:


13

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.


Vielen Dank für die klare, prägnante Antwort! Ja, nein, es wurde nicht sofort deaktiviert, es wurde aktiviert und vollständig "live", bis ich es Sekunden vor der Benutzerbeschwerde / Leistungsverlangsamung deaktivierte. Du bist gut :)
NateJ

1
@NateJ Diese Theorie kann durch CREATE STATISTICSanstelle von getestet werden CREATE INDEX.
Jakub Kania
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.