Skip to main content

MsSQL - Performance Script and Monitoring Scripts

SELECT TOP 10
    qs.total_worker_time AS [Total CPU Time (ms)],
    qs.execution_count AS [Execution Count],
    qs.total_worker_time / qs.execution_count AS [Avg CPU Time (ms)],
    qs.total_elapsed_time / qs.execution_count AS [Avg Elapsed Time (ms)],
    qs.total_logical_reads / qs.execution_count AS [Avg Logical Reads],
    SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
        ((CASE qs.statement_end_offset
            WHEN -1 THEN DATALENGTH(st.text)
            ELSE qs.statement_end_offset
        END - qs.statement_start_offset)/2) + 1) AS [Query Text],
    qp.query_plan AS [Query Plan]
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.total_worker_time DESC;