我有两个存储过程,第二个存储过程是对第一个存储过程的改进。
我试图准确衡量这种改善的程度。
1 /测量clock time
似乎不是一个选项,因为我得到了不同的执行时间。更糟糕的是,有时(很少,但它会发生)第二个存储过程的执行时间大于第一个过程的执行时间(我猜是由于当时的服务器工作负载)。
2 / Include client statistics
也会提供不同的结果。
3 / DBCC DROPCLEANBUFFERS
,DBCC FREEPROCCACHE
很好,但同样的故事......
SET STATISTICS IO ON
可能是一个选项,但是如果我的存储过程涉及很多表格,我怎样才能得到总分?
5 / Include actual execution plan
也可以是一个选项。第一个存储过程得到estimated subtreecost
0.3253,第二个存储过程得到0.3079。我可以说第二个存储过程快6%(= 0.3253 / 0.3079)吗?
6 /使用"读取" SQL Server Profiler中的字段?即使在这种情况下,当我多次执行这些存储过程时,我得到的结果也不同。
那么我怎么能说第二个存储过程比第一个过程快x%,无论执行条件如何(服务器的工作负载,执行这些存储过程的服务器等)。
如果不可能,我怎样才能证明第二个存储过程更加优化。