SQL Server

SQL Server には、プロシージャをステートメント レベルで再コンパイルする機能が備わっています。 SQL Server でストアド プロシージャを再コンパイルすると、プロシージャ全体ではなく、再コンパイルが必要なステートメントだけがコンパイルされます。

メリット

  • プロシージャを初めてコンパイルするときや再コンパイルするとき、データベースおよびそのオブジェクトの現在の状態に合わせてプロシージャのクエリプランが最適化されます。
  • データベースのデータまたは構造に大きな変更が加えられた場合、プロシージャを再コンパイルすることにより、その変更に合わせてプロシージャのクエリ プランが更新され、最適化されます。 これにより、プロシージャの処理パフォーマンスが向上します。
  • プロシージャのコンパイル時に "パラメーターを見つけ出す" 動作の影響を少なくすることです。
  • 異なるパラメーター値に基づく新しいプランを生成することにより、パフォーマンスを向上させることができます。

自動的再コンパイル

  • プロシージャの再コンパイルは、強制的に実行する必要がある場合もあれば、自動的に実行される場合もあります。
  • 自動再コンパイルは、SQL Server が再起動されるたびに発生します。
  • 自動再コンパイルは、プロシージャによって参照されている基になるテーブルの物理デザインが変更された場合にも発生します。 ただし、プロシージャにとって有益な新しいインデックスが追加されても、テーブル自体は変更されていないため、自動再コンパイルは発生しません。
  • 自動再コンパイルは、SQL Server の再起動後にプロシージャが実行されるまで発生しません。 このような場合、SQL Server の再起動を待つのではなく、プロシージャを次回実行したときに強制的に再コンパイルするようにしておくと便利です。

権限

WITH RECOMPILE オプション

プロシージャ定義を作成するときにこのオプションを使用する場合、データベースの CREATE PROCEDURE 権限とプロシージャが作成されるスキーマに対する ALTER 権限が必要です。

EXECUTE ステートメントでこのオプションを使用する場合、プロシージャに対する EXECUTE 権限が必要です。 EXECUTE ステートメント自体に対する権限は必要がありませんが、EXECUTE ステートメント内で参照されているプロシージャに対する実行権限が必要です。 詳細については、「EXECUTE (Transact-SQL)」を参照してください。

RECOMPILE クエリ ヒント

この機能は、プロシージャが作成され、ヒントがプロシージャの Transact-SQL ステートメントに含まれている場合に使用されます。 したがって、データベースの CREATE PROCEDURE 権限と、プロシージャを作成するスキーマに対する ALTER 権限が必要です。

sp_recompile システム ストアド プロシージャ

指定したプロシージャに対する ALTER 権限が必要です。



本当にほしかったのはこういうブログだったんだ

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:41:58 (1628d)

PCpዾyǗlgĂ܂}WŔ܂z 萔O~ył񂫁z Yahoo yV NTT-X Store

z[y[W ̃NWbgJ[h COiq ӂ邳Ɣ[ COsیI COze