1. 程式人生 > >如何找出執行最慢的SQL

如何找出執行最慢的SQL

找出執行時間最長的10條SQL:

SELECT top 10
	(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'執行次數'
	,creation_time N'語句編譯時間'
	,last_execution_time 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'執行語句'
	,qp.query_plan
FROM
sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
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;

如果想對SQL作篩選,可將

not like '%fetch%'  換成  like '%user%'就可以找出SQL語句中含有user關鍵字的SQL

原文:

http://blog.csdn.net/silvanus/article/details/8424227