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 TIMEAnweisungen 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 TimesNachrichtenausgabe entspricht Query 4im Ausführungsplanbereich usw.
Aber gibt es einen besseren Weg?
Durationund dieCPUErgebnisse eher Istwerte als Schätzungen, ja?