【SQL Server】実行プランの削除 ~ DBCC FREEPROCCACHE ~

全ての実行プランを削除

構文

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

補足説明

 * WITH NO_INFOMSGS 句を指定して、情報メッセージが表示されないようにする

特定の実行プランを削除

構文

SELECT plan_handle, st.text
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE text LIKE N'【特定したいSQL文】';

plan_handle                                         text
--------------------------------------------------  -----------------------------
【実行プランのID】                                 【特定したいSQL文】

-- ★ここ★
DBCC FREEPROCCACHE (【実行プランのID】);

サンプル

SELECT * FROM TestTable;
GO
SELECT plan_handle, st.text
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE text LIKE N'SELECT * FROM TestTable%';
GO

plan_handle                                         text
--------------------------------------------------  -----------------------------
0x060006001ECA270EC0315D05000000000000000000000000  SELECT * FROM Person.Address;

-- ★ここ★
DBCC FREEPROCCACHE (0x060006001ECA270EC0315D05000000000000000000000000);



関連記事

SQL Server の調査ツール [3] ~ 実行プランの分析 ~

http://blogs.yahoo.co.jp/dk521123/28898627.html