はじめに
オプション (RECOMPILE) SQL Server の ) 句は常に高価な操作であると考えられてきましたが、特定の操作にはこの句が含まれています。クエリによりパフォーマンスが大幅に向上する可能性があります。このパラドックスは多くの開発者を困惑させ、根底にあるメカニズムや OPTION (RECOMPILE) が本当に有利である状況についての疑問を引き起こしました。
ある開発者が遭遇した質問
クエリに OPTION (RECOMPILE) を追加すると、実行時間が 5 分から 0.5 秒に大幅に短縮されるという異常な状況が発生しました。この動作は、クエリがクエリ アナライザーから実行されたか、SqlCommand.ExecuteReader() を使用した C# アプリケーション経由で実行されたかに関係なく継続しました。クエリ呼び出しでは、最適ではないパラメータ スニッフィングに関する懸念を排除するために、常に同じパラメータが使用されました。
説明
OPTION (RECOMPILE) が常に有効であるという想定に反して、コストのかかる操作ですが、特定のシナリオでは有益な場合があります。一般的な説明の 1 つは、基になるデータやパラメーターが大幅に変更された場合に実行プランを再構築する必要があるということです。
SQL Server がストアド プロシージャ (またはパラメーター化されたクエリ) を作成するとき、SQL Server は、初期データとパラメータ。ただし、異なるデータまたはパラメータを使用した後続の実行は、キャッシュされた実行プランと一致しなくなる可能性があります。このような場合、OPTION (RECOMPILE) を使用して実行プランを再コンパイルすると、SQL Server が現在の条件に合わせて最適化されるため、パフォーマンスが向上する可能性があります。
ここで示した特定のケースでは、開発者はクエリの実行を再構築することを検討する必要があります。 sp_updatestats を使用して統計を計画および更新します。このプロセスにより、キャッシュされた実行計画が最新の情報に基づいていることが保証され、実行のたびに再コンパイルする必要性が減ります。
重要なポイント
以上がOPTION (RECOMPILE) によって SQL クエリが驚くほど高速になるのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。