Ho 2 stored procedure, in cui la seconda stored procedure è un miglioramento della prima.
Sto provando a misurare esattamente quanto sia un miglioramento.
1 / La misurazione clock time
non sembra essere un'opzione poiché ottengo tempi di esecuzione diversi. Ancora peggio, a volte (raramente, ma succede) il tempo di esecuzione della seconda procedura memorizzata è maggiore del tempo di esecuzione della prima procedura (suppongo che a causa del carico di lavoro del server in quel momento).
2 / Include client statistics
fornisce anche risultati diversi.
3 / DBCC DROPCLEANBUFFERS
, DBCC FREEPROCCACHE
sono buoni, ma la stessa storia ...
4 / SET STATISTICS IO ON
potrebbe essere un'opzione, ma come posso ottenere un punteggio complessivo visto che ho molte tabelle coinvolte nelle mie procedure memorizzate?
5 / Include actual execution plan
potrebbe essere anche un'opzione. Ottengo uno estimated subtreecost
di 0,3253 per la prima procedura memorizzata e 0,3079 per la seconda. Posso dire che la seconda procedura memorizzata è più veloce del 6% (= 0,3253 / 0,3079)?
6 / Utilizzo del campo "Letture" dal profiler di SQL Server?
Quindi, come posso dire che la seconda procedura memorizzata è x% più veloce della prima procedura, indipendentemente dalle condizioni di esecuzione (il carico di lavoro del server, il server in cui vengono eseguite queste procedure memorizzate, ecc.)?
Se ciò non è possibile, come posso dimostrare che la seconda procedura memorizzata ha un tempo di esecuzione migliore rispetto alla prima procedura memorizzata?