如何find最慢的查询

使用Sql Server 2005 Profiler,可以跟踪哪些事件,列和filter来查找最慢的查询和存储过程?

慢=大于N秒,为了论证的缘故。

在SQL 2005中,您可以使用pipe理视图查找运行缓慢的查询 。 我之前发现的一个很好的脚本,可以帮助你开始SQL服务器的性能 。 它列出了性能最慢的数据。

SELECT creation_time ,last_execution_time ,total_physical_reads ,total_logical_reads ,total_logical_writes , execution_count , total_worker_time , total_elapsed_time , total_elapsed_time / execution_count avg_elapsed_time ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS statement_text FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st ORDER BY total_elapsed_time / execution_count DESC; 

在使用分析器之前,我检查内置的使用情况报告。 右键单击数据库,Reports,Standard Reports,然后是Object Execution Statistics。

它列出了当前caching的执行计划,以及资源的数量和运行次数。 这通常给了一个关于什么使服务器忙碌的很好的想法。

持续时间栏为我做,但有时我也看看读写栏。

我使用TSQL:StmtCompletedfilter来获取原始查询。 你可能想添加其他的存储过程,但tsql是你需要查看的“基础”。 正如MSDN文章所述

“存储过程的执行可以由SP监视:开始,SP:StmtStarting,SP:StmtCompleted和SP:已完成的事件类和所有TSQL事件类。