[SQL SERVER][TSQL]找出sql statement所對應的執行計畫

[SQL SERVER][TSQL]找出sql statement所對應的執行計畫

sql tuning往往都需要找出sql statement執行計畫,而在SSMS2008中加強圖形輸出(SQ2005以XML呈現)

這樣將使DBA更清楚了解相關資訊(圖形化才是王道阿~XD)。

這裡簡單測試,我將利用三個DMV來取得相關資料。

sys.dm_exec_cached_plans、sys.dm_exec_query_plan和sys.dm_exec_sql_text

 

declare @mysql as varchar(max)
set @mysql='select * from dbo.DatabaseLog'
select quep.query_plan,sqlp.text, cacp.* FROM ((sys.dm_exec_cached_plans cacp 
CROSS APPLY sys.dm_exec_query_plan(cacp.plan_handle) quep)
CROSS APPLY sys.dm_exec_sql_text(cacp.plan_handle) sqlp) 
where sqlp.text=@mysql

image

點擊XML超連結後,將以圖形化呈現執行計畫

image

如果你比較習慣XML,當然也是可以的。

image

擷取部分

image

當然我們也可以找出前50複雜程度高的執行計畫,查看是否還有tuning空間。

select top 50 quep.query_plan,sqlp.text, cacp.* FROM ((sys.dm_exec_cached_plans cacp 
CROSS APPLY sys.dm_exec_query_plan(cacp.plan_handle) quep)
CROSS APPLY sys.dm_exec_sql_text(cacp.plan_handle) sqlp) order by 6 desc

image