実行プランを作成しなおしてクエリのパフォーマンスを改善する
2016/7/2
文書番号:20530
これまで普通に使えていた SQL Server が急に遅くなった、夜間の更新処理に異常に時間がかかるようになった。といったとき、統計情報が古くなっていて実行プランが正しく選択されていないことががあります。
「統計情報を更新してクエリのパフォーマンスを改善する」 では統計情報を更新してクエリのパフォーマンス改善を試みましたがこれで改善しなかった場合、次は実行プランを再作成してみます。
「統計情報を更新してクエリのパフォーマンスを改善する」 では統計情報を更新してクエリのパフォーマンス改善を試みましたがこれで改善しなかった場合、次は実行プランを再作成してみます。
【実行方法】
- インスタンス単位でプランキャッシュをクリアします。
--プランキャッシュをすべてクリアする DBCC FREEPROCCACHE;
- 次回実行時に再コンパイルする(テーブル単位で指定)
どのクエリが遅いかわかっている場合に使用します。
USE [データベース名]; GO --テーブルを指定して次回実行時に再コンパイルを指定する EXEC sp_recompile N'テーブル名';
- 次回実行時に再コンパイルする(プロシージャを指定)
どのプロシージャが遅いかわかっている場合に使用します。
USE [データベース名]; GO --プロシージャを指定して次回実行時に再コンパイルを指定する EXEC sp_recompile N'プロシージャ名';
【参考情報】
[MSDN] DBCC FREEPROCCACHE (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms174283(v=sql.110).aspx
[MSDN] sp_recompile (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms181647(v=sql.110).aspx
http://msdn.microsoft.com/ja-jp/library/ms174283(v=sql.110).aspx
[MSDN] sp_recompile (Transact-SQL)
http://msdn.microsoft.com/ja-jp/library/ms181647(v=sql.110).aspx