查询执行最慢的query的DMV

本文展示了一条SQL查询语句,用于统计数据库中不同查询的平均执行时间、总执行时间和执行次数,并提供了详细的查询结果解析。
SELECT TOP 100
    qs.total_elapsed_time / qs.execution_count / 1000000.0 AS average_seconds,
    qs.total_elapsed_time / 1000000.0 AS total_seconds,
    qs.execution_count,
    SUBSTRING (qt.text,qs.statement_start_offset/2,
         (CASE WHEN qs.statement_end_offset = -1
            THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
          ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) AS individual_query,
    o.name AS object_name,
    DB_NAME(qt.dbid) AS database_name
  FROM sys.dm_exec_query_stats qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
    LEFT OUTER JOIN sys.objects o ON qt.objectid = o.object_id
where qt.dbid = DB_ID()

  ORDER BY average_seconds DESC;



更多查询语句参考原帖:

http://www.sqlservercentral.com/Forums/Topic619606-360-1.aspx

### 查看 SQL Server 查询语句执行计划的方法 在 SQL Server 中,查询执行计划是优化查询性能的重要工具。执行计划描述了 SQL Server 如何执行查询,包括使用的索引、表扫描方式以及资源消耗等信息。以下是几种查看 SQL Server 查询语句执行计划的方法: #### 1. 使用图形化执行计划 SQL Server Management Studio (SSMS) 提供了图形化执行计划的功能,可以直观地展示查询执行过程。 - 在 SSMS 中打开查询窗口,编写需要分析的 SQL 查询语句。 - 点击工具栏中的“显示实际执行计划”按钮(或按快捷键 `Ctrl + M`),然后执行查询。 - 查询完成后,SSMS 将在结果窗口中显示图形化的执行计划[^1]。 #### 2. 使用动态管理视图 (DMV) 动态管理视图 (DMV) 可以查询存储在缓存中的查询执行计划。以下是一个示例查询,用于获取缓存中的查询计划及其相关信息: ```sql SELECT TOP 1000 QS.creation_time AS 创建时间, SUBSTRING(ST.text, (QS.statement_start_offset / 2) + 1, ((CASE QS.statement_end_offset WHEN -1 THEN DATALENGTH(ST.text) ELSE QS.statement_end_offset END - QS.statement_start_offset) / 2) + 1) AS 查询语句, ST.text AS 执行文本, QS.total_worker_time AS 总CPU时间, QS.last_worker_time AS 最近一次CPU时间, QS.max_worker_time AS 最大CPU时间, QS.min_worker_time AS 最小CPU时间, QS.execution_count AS 执行次数, QS.total_elapsed_time AS 总耗时, QS.total_logical_reads AS 总逻辑读取次数, QS.total_physical_reads AS 总物理读取次数 FROM sys.dm_exec_query_stats QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) ST ORDER BY QS.total_elapsed_time DESC; ``` 此查询将返回最近执行查询及其统计信息,按照总耗时降序排列[^3]。 #### 3. 使用 SET SHOWPLAN_ALL 或 SET SHOWPLAN_TEXT 这些选项可以在不实际执行查询的情况下生成执行计划。例如: ```sql SET SHOWPLAN_ALL ON; GO SELECT * FROM YourTable WHERE YourColumn = 'YourValue'; GO SET SHOWPLAN_ALL OFF; ``` 此方法适用于测试查询性能而不影响数据库的实际数据操作[^1]。 #### 4. 使用 XML 格式的执行计划 SQL Server 支持以 XML 格式导出执行计划,便于进一步分析或存档。可以通过以下查询获取 XML 格式的执行计划: ```sql SELECT query_plan FROM sys.dm_exec_query_stats QS CROSS APPLY sys.dm_exec_text_query_plan(QS.plan_handle, DEFAULT, DEFAULT) TP; ``` 此查询将返回缓存中的查询计划,并以 XML 格式呈现。 ### 注意事项 - 查询执行计划缓存可能会因为内存压力或其他原因被清除,因此某些计划可能无法从缓存中获取。 - 使用 DMV 查询执行计划时,确保有足够的权限访问系统视图和函数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值