我试图通过确切的改进量来衡量.
1 /测量时钟时间似乎不是一个选项,因为我得到不同的执行时间.更糟糕的是,有时(很少,但它会发生)第二个存储过程的执行时间大于第一个过程的执行时间(我猜是由于当时的服务器工作负载).
3 / DBCC DROPCLEANBUFFERS,DBCC FREEPROCCACHE很好,但同样的故事……
4 / SET STATISTICS IO ON可能是一个选项,但是如果我的存储过程涉及很多表,我怎么能得到总分?
5 /包括实际执行计划也可以是一个选项.第一个存储过程的估计子树成本为0.3253,第二个存储过程的子树成本为0.3079.我能说第二个存储过程快6%(= 0.3253 / 0.3079)吗?
6 /使用sql Server Profiler中的“读取”字段?
那么,无论执行条件如何(服务器的工作负载,执行这些存储过程的服务器等),我怎么能说第二个存储过程比第一个过程快x%?
如果不可能,我怎样才能证明第二个存储过程的执行时间比第一个存储过程好?
解决方法
例如,您可以执行100次每个存储过程,然后使用统计信息来备份您的改进. “超过100次执行,我的改进总共节省了30秒,而存储过程每次执行的读取次数减少了1500次.”我想你应该已经明白了.
如果存储过程中有参数,那么仔细检查您的改进是否适用于许多不同的参数集总是一个好主意. sqlQueryStress做了一些很酷的事情,让你在查询中替换参数,以更好地了解存储过程如何执行.
sqlQueryStress文档:http://www.datamanipulation.net/sqlquerystress/documentation/documentation.asp
原文地址:https://www.jb51.cc/mssql/80034.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。