如何找到最慢的查询

KM.*_*KM. 54 sql-server profiling sql-server-2005

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

慢=大于N秒,为了争论10.

u07*_*7ch 97

在SQL 2005中,您可以使用管理视图来查找运行缓慢的查询.我刚才发现一个关于SQL Server性能的好脚本将帮助你入门; 它列出了首先执行速度最慢的数据.

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;
Run Code Online (Sandbox Code Playgroud)

  • 时间以微秒为单位; MSDN在管理视图上有很好的细分http://msdn.microsoft.com/en-us/library/ms189741.aspx (4认同)

And*_*mar 12

在使用Profiler之前,我会检查内置的使用情况报告.右键单击数据库,Reports,Standard Reports,然后单击Object Execution Statistics.

它列出了当前缓存的执行计划,以及资源量和运行次数.这通常可以很好地了解保持服务器繁忙的原因.