查询sqlserver中的慢sql

dba 发布于 2023-12-26 阅读(37)
SELECT
    a.session_id,
    a.client_net_address,
    ( total_elapsed_time / execution_count ) / 1000 N'平均时间ms',
    total_elapsed_time / 1000 N'总花费时间ms',
    total_worker_time / 1000 N'所用的CPU总时间ms',
    total_physical_reads N'物理读取总次数',
    total_logical_reads / execution_count N'每次逻辑读次数',
    total_logical_reads N'逻辑读取总次数',
    total_logical_writes N'逻辑写入总次数',
    execution_count N'执行次数',
    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
    ) N'执行语句',
    st.text
    ,
    creation_time N'语句编译时间',
    last_execution_time N'上次执行时间'
FROM
    sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text ( qs.sql_handle ) st
    LEFT JOIN (
    SELECT
        a.session_id,
        a.sql_handle sql_handle,
        b.client_net_address client_net_address
    FROM
        sys.dm_exec_requests a,
        sys.dm_exec_connections b
    WHERE
        a.session_id = b.session_id
    ) a ON qs.sql_handle = a.sql_handle
ORDER BY
    total_elapsed_time / execution_count DESC