如何查詢效能最差的SQL語句

2021-07-10 10:28:13 字數 2806 閱讀 5524

--總耗時最長

select top 10

total_worker_time / 1000 as n'總消耗cpu 時間(ms)' ,

execution_count n'執行次數' ,

qs.total_worker_time / qs.execution_count / 1000 as n'平均消耗cpu 時間(ms)' ,

last_execution_time as n'最後一次執行時間' ,

max_worker_time / 1000 as n'最大執行時間(ms)' ,

substring(qt.text, qs.statement_start_offset / 2 + 1,

( case when qs.statement_end_offset = -1

then datalength(qt.text)

else qs.statement_end_offset

end - qs.statement_start_offset ) / 2 + 1) as n'使用cpu的語法' ,

qt.text n'完整語法'

from    sys.dm_exec_query_stats qs with ( nolock )

where   execution_count > 1

order by max_worker_time desc

--平均耗時最長

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'執行次數' ,

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

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 '%tch%'

order by total_elapsed_time / execution_count desc

--物理讀耗時最長

select top 10

qs.total_physical_reads n'物理讀取總次數' ,

qs.execution_count n'執行次數' ,

qs.total_physical_reads / qs.execution_count / 1000 as n'平均時間ms' ,

substring(qt.text, ( qs.statement_start_offset / 2 ) + 1,

( ( case statement_end_offset

when -1 then datalength(qt.text)

else qs.statement_end_offset

end - qs.statement_start_offset ) / 2 ) + 1) n'完整語法'

from    sys.dm_exec_query_stats qs

order by qs.total_physical_reads desc  

--邏輯讀耗時最長

select top 10

qs.total_logical_reads n'邏輯讀取總次數' ,

qs.execution_count n'執行次數' ,

qs.total_logical_reads / qs.execution_count / 1000 as n'平均時間ms' ,

substring(qt.text, ( qs.statement_start_offset / 2 ) + 1,

( ( case statement_end_offset

when -1 then datalength(qt.text)

else qs.statement_end_offset

end - qs.statement_start_offset ) / 2 ) + 1) n'完整語法'

from    sys.dm_exec_query_stats qs

order by qs.total_logical_reads desc  

如何查詢效能最差的SQL語句

總耗時最長 select top 10 total worker time 1000 as n 總消耗cpu 時間 ms execution count n 執行次數 qs.total worker time qs.execution count 1000 as n 平均消耗cpu 時間 ms la...

如何找出最差效能的查詢

我經常會被反覆問到這樣的問題 我有乙個效能很差的sql server。我如何找出最差效能的查詢?因此在今天的文章裡會給你一些讓你很容易找到問題答案的資訊嚮導。sql server的乙個優點是它本身能回答幾乎所有你的問題,因為sql server在各個dmv和dmf裡儲存了很多故障排除資訊。另一方面這...

SQL語句的效能查詢

本文 對於做管理系統和分析系統的程式設計師,複雜sql語句是不可避免的,面對海量資料,有時候經過優化的某一條語句,可以提高執行效率和整體執行效能。如何選擇sql語句,本文提供了兩種方法,分別對多條sql進行量化的分析。在測試sql效能的過程中。一是通過設定statistics檢視執行sql時的系統情...