Ich habe zwei T-SQL-Abfragen mit SqlServer 2005. Wie kann ich messen, wie lange es dauert, bis jede ausgeführt wird?
Die Verwendung meiner Stoppuhr schneidet nicht.
performance
sql-server-2005
TheMoot
quelle
quelle
Antworten:
Ein vereinfachter Ansatz zur Messung der "verstrichenen Zeit" zwischen Ereignissen besteht darin, nur das aktuelle Datum und die aktuelle Uhrzeit zu erfassen.
In SQL Server Management Studio
Um die verstrichenen Zeiten zu berechnen, können Sie diese Datumswerte in Variablen erfassen und die DATEDIFF-Funktion verwenden:
Das ist nur ein Ansatz. Mit SQL Profiler können Sie auch verstrichene Zeiten für Abfragen abrufen.
quelle
SET @t1 = GETDATE();
am Anfang meiner Abfrage undSET @t2 = GETDATE();SELECT 'NOTE 1',DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;SET @t1 = GETDATE();
füge sie dann an wichtigen Stellen in der Abfrage ein (indem ich "ANMERKUNG 1" entsprechend bearbeite). Die Behandlung der Auswahlen als Haltepunkte und nicht als Messungen ist semantisch identisch mit Ihrem Ansatz (obwohl die endgültige Einstellung auf @ t1 falsch ist und dies voraussetzt, dass alle Abfragen gemessen werden sollten). Dies ist lediglich eine mentale / Typisierungsoptimierung (eine Einfügung pro Haltepunkt anstelle von zwei Pasten pro Abfrage).Wenn Sie eine genauere Messung als die obige Antwort wünschen:
Die Ergebnisse werden im Nachrichtenfenster angezeigt.
Update (29.07.2015):
Auf vielfachen Wunsch habe ich ein Code-Snippet geschrieben, mit dem Sie die gesamte Ausführung einer gespeicherten Prozedur und nicht deren Komponenten zeitlich festlegen können. Obwohl dies nur die Zeit zurückgibt, die für den letzten Lauf benötigt wurde, werden zusätzliche Statistiken zurückgegeben
sys.dm_exec_procedure_stats
, die ebenfalls von Wert sein können:quelle
To use SET STATISTICS TIME, users must have the appropriate permissions to execute the Transact-SQL statement. The SHOWPLAN permission is not required.
von: technet.microsoft.com/en-us/library/ms190287.aspxSie können diese Lösung auch anzeigen
quelle
Eine andere Möglichkeit ist die Verwendung einer integrierten SQL Server-Funktion mit dem Namen, auf
Client Statistics
die über Menü> Abfrage> Clientstatistik einschließen zugegriffen werden kann .Sie können jede Abfrage in einem separaten Abfragefenster ausführen und die Ergebnisse vergleichen, die auf der
Client Statistics
Registerkarte direkt neben derMessages
Registerkarte angezeigt werden.Das folgende Bild zeigt beispielsweise, dass die durchschnittliche Zeit, die verstrichen ist, um die Serverantwort für eine meiner Abfragen zu erhalten, 39 Millisekunden beträgt.
Sie können die Ausführungszeit für den Erwerb der in allen 3 Arten lesen Sie hier . Möglicherweise müssen Sie sogar
Estimated Execution Plan
ctrlLfür weitere Untersuchungen zu Ihrer Abfrage anzeigen .quelle
Noch besser, dies misst den Durchschnitt von n Iterationen Ihrer Abfrage! Ideal für eine genauere Ablesung.
quelle
MICROSECOND
,MILLISECOND
wenn ich die folgenden Zeilen zwischenbegin
und eingefügt habedeclare @t0 ...
:CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
. Funktioniert wie Charme und genau das, wonach ich gesucht habe. +1Klicken Sie auf das Statistiksymbol, um die Abfrage anzuzeigen und dann auszuführen, um die Timings abzurufen und zu erfahren, wie effizient Ihre Abfrage ist
quelle