[SQLSERVER][SQL]查询历史SQL语句执行耗时

-- 查询历史SQL语句执行耗时
SELECT
    qs.creation_time,
    qt.text AS SQL_Text,
    qs.execution_count,
    qs.total_elapsed_time,
    qs.total_logical_reads,
    qs.total_physical_reads
FROM
    sys.dm_exec_query_stats qs
CROSS APPLY
    sys.dm_exec_sql_text(qs.sql_handle) qt
ORDER BY
    qs.creation_time DESC;

针对SQL Server数据库的,用于查询历史SQL语句的执行情况,包括创建时间、SQL文本、执行次数、总耗时、总逻辑读取次数和总物理读取次数。查询结果将按照创建时间降序排列,即最新的记录会显示在最前面。

以下是查询语句的关键点解释:

  • sys.dm_exec_query_stats: 这是一个动态管理视图(DMV),用于存储SQL Server查询的执行统计信息。
  • qs.creation_time: 记录了查询统计信息的创建时间。
  • qt.text AS SQL_Text: 使用sys.dm_exec_sql_text函数获取与sql_handle关联的SQL文本,并将其重命名为SQL_Text
  • qs.execution_count: 表示该SQL语句的执行次数。
  • qs.total_elapsed_time: 表示该SQL语句自创建以来的总执行时间。
  • qs.total_logical_reads: 表示该SQL语句执行过程中的逻辑读取次数,即从缓存中读取数据的次数。
  • qs.total_physical_reads: 表示该SQL语句执行过程中的物理读取次数,即从磁盘读取数据的次数。
  • CROSS APPLY: 用于将外层查询的结果与内层查询的结果进行交叉应用,这里用于将sys.dm_exec_sql_text的结果与sys.dm_exec_query_stats的结果结合。
  • ORDER BY qs.creation_time DESC: 按照创建时间降序排列结果。

请注意,这个查询可能需要在具有足够权限的上下文中执行,比如数据库管理员或具有相应权限的用户。此外,sys.dm_exec_query_stats中的数据可能会因为SQL Server的查询优化器的清理操作而变得不准确或被清除,所以查询结果可能不包含所有历史数据。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

awonw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值