美文网首页
sql server性能优化之查询耗时最长的语句

sql server性能优化之查询耗时最长的语句

作者: 吉凶以情迁 | 来源:发表于2024-10-09 14:46 被阅读0次
SELECT TOP 10
    qs.total_elapsed_time / qs.execution_count / 1000/1000 AS 平均执行时间_秒,  
    qs.execution_count AS 执行次数,                                         
    qs.total_elapsed_time / 1000/1000 AS 总执行时间_秒,                   
    qs.total_logical_reads AS 总逻辑读取次数,                        
    qs.total_physical_reads AS 总物理读取次数,                      
    qs.total_worker_time / 1000/1000 AS 总CPU时间_秒,                     
    SUBSTRING(qt.text, (qs.statement_start_offset/2) + 1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(qt.text)
            ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS 查询语句文本,            -- 查询的实际语句
    qt.dbid AS 数据库ID,                                                     -- 数据库ID
    qt.objectid AS 对象ID                                                    -- 对象ID
FROM
    sys.dm_exec_query_stats AS qs
CROSS APPLY
    sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY
    平均执行时间_秒 DESC;  -- 根据平均执行时间降序排列
image.png

但是这样还不够,需要知道是什么程序执行的,是哪台电脑

SELECT TOP 10
    qs.total_elapsed_time / qs.execution_count / 1000.0 / 1000.0 AS 平均执行时间_秒,  -- 平均执行时间(秒)
    qs.execution_count AS 执行次数,                                                  -- 查询被执行的次数
    qs.total_elapsed_time / 1000.0 / 1000 AS 总执行时间_秒,                        -- 总执行时间(秒)
    qs.total_logical_reads AS 总逻辑读取次数,                                         -- 总逻辑读取次数
    qs.total_physical_reads AS 总物理读取次数,                                        -- 总物理读取次数
    qs.total_worker_time / 1000.0 / 1000 AS 总CPU时间_秒,                          -- 总CPU时间(秒)
    SUBSTRING(qt.text, (qs.statement_start_offset/2) + 1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(qt.text)
            ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS 查询语句文本,                    -- 查询的实际语句
    s.host_name AS 主机名,                                                           -- 执行查询的主机名
    s.program_name AS 程序名,                                                        -- 执行查询的程序名
    s.login_name AS 登录名                                                           -- 执行查询的登录名
FROM
    sys.dm_exec_query_stats AS qs
CROSS APPLY
    sys.dm_exec_sql_text(qs.sql_handle) AS qt
JOIN
    sys.dm_exec_requests AS r ON qs.sql_handle = r.sql_handle
JOIN
    sys.dm_exec_sessions AS s ON r.session_id = s.session_id
ORDER BY
    平均执行时间_秒 DESC;  -- 根据平均执行时间降序排列

相关文章

  • mysql explain命令使用详解

    在SQL语句前面加上explain关键词,会显示该语句的查询性能信息,相当于SQL Server的查询计划,可以帮...

  • 数据库查询优化器

      所谓查询优化,目标是关系数据库下或者 newSQL 的 SQL Server 层对 SQL 语句进行优化,在不...

  • MySQL Explain的用法

    Explain关键字的作用 模拟Mysql优化器是如何执行SQL查询语句,用于分析查询语句或是表结构的性能瓶颈。 ...

  • 慢查询

    含义:可以让mysql记录一些查询超过限定时间的语句,通过开启慢查询,优化SQL语句进而优化数据库系统的性能。 参...

  • mysql语句性能开销检测profiling详解

    之前我介绍过msyql查询优化explain检查命令的使用,explain主要是检查sql语句的基本性能,sql是...

  • 数据库练习三: 认识Explain

    介绍 EXPLAIN命令是查询性能优化不可缺少的一部分。使用explain关键字可以模拟优化器执行SQL查询语句,...

  • MySql优化神器 Explain工具介绍

    使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析查询语句或是结构的性能瓶颈。在select语句之前增加e...

  • SQL Server 统计信息

    统计信息是如何提高SQL Server查询性能的?统计直方图用作在查询执行计划中查询优化器的选择依据。如果一个查询...

  • PHP面试之MySQL查询优化

    [TOC] 请简述项目中优化MySQL语句执行效率的方法,从哪些方面入手,SQL语句性能如何分析? 分析查询速度 ...

  • mysql性能优化之慢查询日志分析

    一、慢查询 在我们的项目中, 有很多需要优化的sql语句, 比如多表连接查询, 通常很耗时, 那么怎么知道哪些sq...

网友评论

      本文标题:sql server性能优化之查询耗时最长的语句

      本文链接:https://www.haomeiwen.com/subject/mweirjtx.html