Ich behebe Leistungsprobleme bei einer in SQL Server gespeicherten Prozedur mit mehreren Anweisungen. Ich möchte wissen, für welche Teile ich Zeit verbringen soll.
Ich verstehe aus Wie lese ich Abfragekosten und ist es immer ein Prozentsatz? dass , selbst wenn SSMS erzählt tatsächlichen Ausführungsplan enthalten , nach wie vor die „Abfragekosten (bezogen auf die Charge)“ Zahlen auf Kosten basiert Schätzungen , die aus Wirklichkeiten sein weit kann
Ich verstehe aus der Messung der Abfrageleistung: "Abfragekosten für Ausführungsplan" im Vergleich zu "Zeitaufwand", dass ich den Aufruf der gespeicherten Prozedur mit SET STATISTICS TIME
Anweisungen umgeben kann, und erhalte dann eine Liste wie diese im Bereich Messages
:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
[etc]
SQL Server Execution Times:
CPU time = 187 ms, elapsed time = 206 ms.
mit einer Ausgangsnachricht für jede Anweisung.
Ich kann die Zeitstatistikausgabe 'einfach' (wenn auch nicht bequem) mit den Ausführungsplänen für Anweisungen für Anweisungen im Ausführungsplanbereich verknüpfen, indem ich sie zähle: Die vierte SQL Server Execution Times
Nachrichtenausgabe entspricht Query 4
im Ausführungsplanbereich usw.
Aber gibt es einen besseren Weg?
Duration
und dieCPU
Ergebnisse eher Istwerte als Schätzungen, ja?