是否有任何方法(除了SQL分析器)在SQL 2005/2008(没有执行它们)中找到最耗时的存储过程列表?
我之所以需要这个是专门针对那些用于优化的存储过程。
谢谢。
答案 0 :(得分:1)
如果您需要有关过程执行,工作时间,物理和逻辑读写或过程耗用时间的信息,我们遇到了类似的问题。您可以从中选择此数据 sys.dm_exec_procedure_stats返回上述所有数据,但过程以数据库对象id显示。
如果您使用下面的脚本,这将通过将统计信息链接到sys.object表以更可读的格式返回该过程,我们可以检索过程名称。必须针对存储过程的数据库运行该脚本。
Select name, type, type_desc, create_date, modify_date, cached_time, last_execution_time, execution_count, total_worker_time, last_worker_time, min_worker_time, max_worker_time, total_physical_reads, last_physical_reads, min_physical_reads, max_physical_reads, total_logical_writes, last_logical_writes, min_logical_writes, max_logical_writes, total_logical_reads, last_logical_reads, min_logical_reads, max_logical_reads, total_elapsed_time, last_elapsed_time, min_elapsed_time, max_elapsed_timefrom sys.objects obj Join sys.dm_exec_procedure_stats stat ON obj.object_id = stat.object_id where obj.type = 'P'
您可以通过过滤结果找到效果最差的程序。在我工作的公司中,我们通常使用最后经过的时间,执行次数和最短工时来查找优化程序。