[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
點擊XML超連結後,將以圖形化呈現執行計畫
如果你比較習慣XML,當然也是可以的。
擷取部分
當然我們也可以找出前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