Sql-Server
如何使用表變數查詢所有查詢的計劃記憶體?
有沒有辦法使用表變數查詢所有查詢的 sql 計劃記憶體?
一種方法是您可以使用系統DMV對記憶體的查詢計劃的文本執行萬用字元搜尋,如下所示:
SELECT databases.[name] AS DatabaseName, Plans.objtype AS ObjectType, PlanText.text AS PlanText FROM sys.dm_exec_cached_plans AS Plans -- Cached Query Plans CROSS APPLY sys.dm_exec_sql_text(Plans.plan_handle) AS PlanText -- Query Plan Text INNER JOIN sys.types -- Data Types (inclusive of User Defined) ON PlanText.[text] LIKE '%' + types.[name] + '%' INNER JOIN master.sys.databases -- Databases ON PlanText.[dbid] = databases.database_id WHERE types.is_user_defined = 1 AND types.is_table_type = 1 -- Filter on only the User Defined Table Types
這將返回記憶體查詢計劃的數據庫、對像類型(視圖、過程、Ad-Hoc 等)以及查詢計劃的文本本身。這樣做的一個潛在缺點是,如果您有一個使用者定義的表類型,該表類型具有用於其他查詢中其他事物的非常常見的名稱,因此您可能會由於包含搜尋的誤報而得到額外的結果。