So suchen Sie nach gespeicherten Prozessen, für die Indizes erstellt werden müssen.
Hat jemand eine Idee? Grundsätzlich haben wir Prozeduren gespeichert, die sehr langsam ablaufen. Ich frage mich, ob es eine Art automatisiertes Skript oder eine App gibt, die scannen kann, um anzuzeigen, ob ein Index erstellt werden muss.
sql-server
stored-procedures
index-tuning
Vsjfkvkkc
quelle
quelle
Antworten:
Nachdem Sie nicht viel darüber nachgedacht und nur die spezifische Frage beantwortet haben, können Sie hier alle gespeicherten Prozeduren identifizieren, die auf Tabellen verweisen, die zu einem bestimmten Zeitpunkt als Kandidaten für zusätzliche Indizes identifiziert wurden. Leider ist dies eine sehr lockere Beziehung ... Ich glaube nicht, dass es eine einfache Möglichkeit gibt zu sagen, dass "diese gespeicherte Prozedur diese Tabelle abgefragt hat und diesen vorgeschlagenen Index hätte verwenden können", es sei denn, Sie haben begonnen, den SQL-Text zu analysieren und den Fuzzy-Abgleich mit den Spalten durchzuführen usw. empfohlen durch die fehlenden Index-DMVs. Dies ist ein Anfangin Richtung dieses Prozesses. Trotzdem stimme ich Henry zu, es gibt viele direktere Möglichkeiten, um Leistungsprobleme in von Ihnen identifizierten gespeicherten Prozeduren zu analysieren und anzugehen. Die Prüfung des Ausführungsplans sollte beispielsweise einige Hinweise viel intuitiver liefern als diese Rundum-Methode, die Sie verfolgen möchten. In jedem Fall ist hier eine Abfrage, um Sie zu starten:
Hinweis: Die DMVs haben normalerweise nur Daten seit dem letzten Neustart.
quelle
Ab SS 2005 gibt es eine DMV mit dem Namen sys.dm_db_missing_index_details. Google das und Sie werden einige nützliche Skripte finden.
Das heißt, Sie müssen das Problem möglicherweise ganzheitlicher betrachten - ist Ihre Hardware ausreichend (Perfmon-Zähler helfen Ihnen dabei), was läuft zur gleichen Zeit noch, worauf wartet SQL hauptsächlich (Google die DMV sys.dm_os_wait_stats) für einige großartige Skripte). Sie können sich den Ausführungsplan der jeweiligen gespeicherten Prozedur ansehen, um herauszufinden, wo der Engpass liegt.
quelle
Erweiterung des Beitrags von @Aaron Bertrand durch Hinzufügen einer allgemeinen Optimierung des Abfrageindex (und automatische Generierung der DDL für die neuen Indikatoren) gemäß @ Rorys Antwort hier: https://stackoverflow.com/a/26060183/4228193 :
Abhängig von den Besonderheiten Ihrer SQL-Installation müssen Sie möglicherweise die "Konstanten"
290
und anpassen425
, die 2x bzw. 3x erscheinen.quelle