2014-05-30 26 views
-2


有沒有什麼辦法(除了SQL事件探查器)在SQL 2005/2008中查找存儲過程的列表(不執行它們)最耗時?
我需要的原因是專門針對那些用於優化的存儲過程。
謝謝。在SQL中查找大多數耗時的存儲過程

+0

你可以試試Google自己:https://www.google.co.uk/webhp?#q=sql+server+most+expensive+queries&safe=off – Tanner

回答

0

如果您需要有關過程執行,工作時間,物理和邏輯讀取和寫入或過程耗用時間的信息,我們遇到了類似的問題。你可以從 中選擇這個數據sys.dm_exec_procedure_stats這將返回所有上面的數據,但是這個過程是通過它們的數據庫對象ID來顯示的。

如果您在下面使用以下腳本,則會通過將統計信息鏈接到sys.object表,以更可讀的格式返回過程,我們可以檢索過程名稱。該腳本必須針對存儲過程的數據庫運行。

Select name, type, type_desc, create_date, modify_date, cached_time, last_execution_time, execution_count, total_worker_time, last_worker_time, min_worker_time, max_worker_time, total_physical_reads, last_physical_reads, min_physical_reads, max_physical_reads, total_logical_writes, last_logical_writes, min_logical_writes, max_logical_writes, total_logical_reads, last_logical_reads, min_logical_reads, max_logical_reads, total_elapsed_time, last_elapsed_time, min_elapsed_time, max_elapsed_timefrom sys.objects obj Join sys.dm_exec_procedure_stats stat ON obj.object_id = stat.object_id where obj.type = 'P' 

您可以通過過濾結果找到性能最差的過程。在我工作的公司中,我們通常會使用最後一次使用時間,執行次數和最短工作時間來查找優化程序。

相關問題