2011年10月29日 星期六

使用(Dynamic Management View)找出執行時間最久的查詢

找出執行時間最久的SQL指令有助於我們減少資料庫的負擔,因為執行時間過長的SQL指令占用資料庫的資源也很長,所出這些SQL指令後加以修改可以不但可以縮短執行時間也可以增加資料庫的效能。

程式碼如下:

SELECT TOP 10
  [總執行時間()]               =CAST(a.total_elapsed_time / 1000000.0 AS DECIMAL(16, 2)) 
, [執行次數]                            =a.execution_count
, [平均執行時間()]     =CAST(a.total_elapsed_time / 1000000.0 / a.execution_count AS DECIMAL(16, 2))
, [SQL指令]                            =SUBSTRING (b.text,(a.statement_start_offset/2) + 1,500)
FROM sys.dm_exec_query_stats a CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) as b
WHERE a.total_elapsed_time > 0 AND B.[text] NOT LIKE '%SCHEMA_NAME%'--去除一些系統的SQL指令
ORDER BY [平均執行時間()] DESC

執行結果:

沒有留言:

張貼留言