Ich habe 2 gespeicherte Prozeduren, wobei die zweite gespeicherte Prozedur eine Verbesserung der ersten ist.
Ich versuche daran zu messen, um wie viel das eine Verbesserung ist.
1 / Messen clock time
scheint keine Option zu sein, da ich unterschiedliche Ausführungszeiten bekomme. Schlimmer noch, manchmal (selten, aber es kommt vor) ist die Ausführungszeit der zweiten gespeicherten Prozedur größer als die Ausführungszeit der ersten Prozedur (ich denke, aufgrund der Serverauslastung in diesem Moment).
2 / Include client statistics
liefert auch unterschiedliche Ergebnisse.
3 / DBCC DROPCLEANBUFFERS
, DBCC FREEPROCCACHE
sind gut, aber die gleiche Geschichte ...
4 / SET STATISTICS IO ON
könnte eine Option sein, aber wie kann ich eine Gesamtbewertung erhalten, da ich viele Tabellen in meine gespeicherten Prozeduren involviert habe?
5 / Include actual execution plan
könnte auch eine Option sein. Ich erhalte einen estimated subtreecost
Wert von 0,3253 für die erste gespeicherte Prozedur und 0,3079 für die zweite. Kann ich sagen, dass die zweite gespeicherte Prozedur 6% schneller ist (= 0.3253 / 0.3079)?
6 / Verwenden Sie das Feld "Reads" von SQL Server Profiler?
Wie kann ich also sagen, dass die zweite gespeicherte Prozedur x% schneller ist als die erste Prozedur, unabhängig von den Ausführungsbedingungen (der Arbeitslast des Servers, dem Server, auf dem diese gespeicherten Prozeduren ausgeführt werden usw.)?
Wie kann ich nachweisen, dass die zweite gespeicherte Prozedur eine bessere Ausführungszeit als die erste gespeicherte Prozedur hat, wenn dies nicht möglich ist?