T-SQL運維指令碼——檢視SQLServer平均最耗資源時間的SQL語句

shanzm發表於2024-11-06
  • 可以在MSSM中直接對當前連結右鍵:活動與監視器 中檢視

  • 也可以執行下面的查詢語句:

SELECT (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'執行語句'
     , 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
WHERE 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) not like 'fetch%'
ORDER BY total_elapsed_time / execution_count DESC;

相關文章