OPTION(RECOMPILE)は常に高速です。どうして?
追加するという奇妙な状況に遭遇しました OPTION (RECOMPILE)クエリすると0.5秒で実行さしましたが、省略するとクエリに5分以上かかります。 これは、クエリがQuery AnalyzerまたはC#プログラムからを介して実行される場合SqlCommand.ExecuteReader()です。呼び出す(または呼び出さない)DBCC FREEPROCCACHEまたはDBCC dropcleanbuffers違いはありません。クエリ結果は常に瞬時に返されOPTION (RECOMPILE)、それがない場合は5分を超えます。クエリは常に[このテストのために]同じパラメータで呼び出されます。 SQL Server 2008を使用しています。 私はSQLの記述にはかなり慣れていますがOPTION、以前にクエリでコマンドを使用したことがなく、このフォーラムの投稿をスキャンするまではプランキャッシュの概念全体に精通していませんでした。投稿から私の理解は、それOPTION (RECOMPILE)は高価な操作です。それは明らかにクエリの新しいルックアップ戦略を作成します。それでは、なぜそれを省略した後続のクエリOPTION (RECOMPILE)が非常に遅いのですか?後続のクエリは、再コンパイルのヒントを含む以前の呼び出しで計算されたルックアップ戦略を利用するべきではありませんか? 呼び出しごとに再コンパイルのヒントを必要とするクエリがあるのは非常に珍しいことですか? エントリーレベルの質問で申し訳ありませんが、私は本当にこれの表裏を作ることができません。 更新:クエリの投稿を求められました... select acctNo,min(date) earliestDate from( select acctNo,tradeDate as date from datafeed_trans where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_money where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_jnl where …