sql - 如何查找花费大量时间的 SQL Server 查询?

标签 sql sql-server

我的申请已过期超过 3 天。 我可以在日志中看到应用程序执行一些 SQL 查询的时刻,这花费了很多时间,可能是因为一些数据库锁。

听说有这样的情况查询。因此,我需要能够提出所有耗时超过 30 分钟的查询。是否可以?

最佳答案

尝试一下:

SELECT TOP 10
    total_worker_time/execution_count AS Avg_CPU_Time
        ,execution_count
        ,total_elapsed_time/execution_count as AVG_Run_Time
        ,(SELECT
              SUBSTRING(text,statement_start_offset/2,(CASE
                                                           WHEN statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), text)) * 2 
                                                           ELSE statement_end_offset 
                                                       END -statement_start_offset)/2
                       ) FROM sys.dm_exec_sql_text(sql_handle)
         ) AS query_text 
FROM sys.dm_exec_query_stats 
ORDER BY AVG_Run_Time DESC

关于sql - 如何查找花费大量时间的 SQL Server 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2318501/

相关文章:

javascript - 如何在where子句中使用$_Post id形式从sql中获取数据

带游标的 MySQL 存储过程

sql - 如何以独占方式锁定阻止 CRUD 操作的行

c# - 如何用SqlCommandBuilder给DataTable中的指定列加值

SQL SELECT 每月的第一天和最后一天。

mysql - 每天的sql查询

MySQL DATE_FORMAT 没有以正确的顺序输出日期

sql - 如何从一个 cfc 文件中的函数查询中调用另一个 CFC 文件中的函数?

sql - 在 SQL Server 2008 中查询每条记录的随机 10%

sql-server - 为什么 SQL Server 不自动将 DATE 上转换为 DATETIME 以进行比较?