11111

SELECT TOP 20
    DB_NAME(st.dbid) AS DatabaseName,
    OBJECT_NAME(st.objectid, st.dbid) AS ObjectName,
    qs.execution_count AS ExecutionCount,
    qs.total_worker_time/qs.execution_count AS AvgCPU_Time,
    qs.total_elapsed_time/qs.execution_count AS AvgElapsed_Time,
    qs.total_logical_reads/qs.execution_count AS AvgLogicalReads,
    qs.total_logical_writes/qs.execution_count AS AvgLogicalWrites,
    qs.total_physical_reads/qs.execution_count AS AvgPhysicalReads,
    qs.max_elapsed_time AS MaxElapsed_Time,
    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 QueryText,
    qp.query_plan AS QueryPlan
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
WHERE qs.execution_count > 0
ORDER BY qs.total_worker_time DESC;  -- 按CPU时间排序