@SolomonRutzky ist richtig.
SQL Profiler Trace ist der einzige Weg ( ohne das Sproc zu bearbeiten) ).
Bearbeiten Sie Ihren Sproc:
Das nächstbeste ist jedoch, den betreffenden Sproc leicht zu bearbeiten.
Deklarieren Sie eine DateTime-Variable am Anfang mit der aktuellen Uhrzeit.
Protokollieren Sie am Ende des Sprocs die Werte für Sproc_StartTime, Sproc_EndTime und Parameter in einer Tabelle.
Sie können sogar eine Bedingungslogik hinzufügen, um ein DateDiff () nur für die Protokollierung zu verwenden, wenn bei der Verarbeitung des Sproc eine längere Zeit verwendet wurde.
Dies kann Ihren Sproc beschleunigen und den Platzverbrauch Ihrer Protokolltabelle verringern, wenn der Sproc "tip-top" ausgeführt wird.
Dann haben Sie eine Protokolldatei, die Sie über Monate abfragen und analysieren können (ohne dass ein Trace in Prod ausgeführt wird).
Wenn Sie mit der Optimierung Ihres Sproc fertig sind, löschen Sie einfach die wenigen Zeilen der Timer- und Logger-Logik, die Sie hinzugefügt haben.
Parameterwerte für den zwischengespeicherten Plan:
Ich sollte erwähnen, dass das Einbeziehen der Werte der aktuellen Cache-Plan-Parameter in Ihre Protokolltabelle Ihnen dabei helfen kann, festzustellen, ob sie das Leistungsproblem verschlimmern .
Ich verwende OPTIMIZE FOR
diese Option, um festzulegen, wie Parameter in meinem Sproc behandelt werden sollen, wenn ich weiß, dass sie zum Schneiden und Zerteilen von Daten verwendet werden.
Ich finde, dass die Verwendung von OPTIMIZE FOR
Ergebnissen konsistent und schnell ist, wenn derselbe Sproc mit Parametern als optionale Filter verwendet wird .
Es ist definitiv eine Variable weniger zu berücksichtigen, wenn Sie angeben, wie damit umgegangen werden soll.
Nachfolgend finden Sie ein Beispiel dafür, was Sie am Ende Ihrer Select-Anweisung hinzufügen könnten:
OPTION(OPTIMIZE FOR (@SiteID = 'ABC',
@LocationID = NULL, @DepartmentID = NULL,
@EmployeeID = NULL, @CustomerID = NULL,
@ProductID = NULL, @OrderID = NULL, @OrderStatusID = NULL,
@IncludedCancelledOrders = 1,
@StartDate UNKNOWN, @EndDate UNKNOWN))