查 TOP CPU/IO/时间长的,看看历史上那些是影响大的,可以用这个
WITH
DATA AS(
SELECT * FROM sys.dm_exec_query_stats WITH(NOLOCK)
WHERE last_execution_time >= DATEDIFF(DAY, 7, GETDATE())
AND execution_count >= 7
)
SELECT QS.*, ST.*, QP.query_plan
FROM(
SELECT TOP 10 __$type = 'CPU', * FROM DATA
WHERE total_worker_time > 0
ORDER BY CONVERT(float, total_worker_time)/execution_count DESC
UNION ALL
SELECT TOP 10 __$type = 'IO', * FROM DATA
WHERE total_logical_reads+total_logical_writes > 0
ORDER BY CONVERT(float, total_logical_reads+total_logical_writes)/execution_count DESC
UNION ALL
SELECT TOP 10 __$type = 'Duration', * FROM DATA
WHERE total_elapsed_time > 0
ORDER BY CONVERT(float, total_elapsed_time)/execution_count DESC
) QS
CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) ST
OUTER APPLY sys.dm_exec_query_plan(QS.plan_handle) As QP
查到问题语句,再根据相关语句的执行计划进行优化调整。