動的な SQL があります。実行には約 4 分かかります。代わりに SQL の出力を取得して実行すると、約 20 秒かかります。なぜ不一致なのですか?動的バージョンで SQL を構築するにはある程度の時間がかかることはわかっていますが、それがそれほど高価であるとは想像できません。
誰にもアイデアはありますか?2 つのクエリは同一である必要があるため、クエリ プランのキャッシュがおかしいのではないかと疑っていましたが、実際にはあまり考えがありません。
編集: 出力を取得することで私が何を意味するかを明確にするために。
動的 SQL では、最後の行は
EXEC sp_executesql @myQuery,
N'@var1 INT,
@var2 INT,
@var2 INT',
@var1,
@var2,
@var3
myQuery の値を取得し、独自の SQL ファイルに入れました。これは 20 秒で実行されますが、execute を使用する動的なものは 4 分かかります。
編集 2 パラメータを削除しました。興味深い結果が得られました。動的 SQL ステートメントのパフォーマンスが向上しました。ハードコーディングされたバージョンでは、パフォーマンスが大幅に低下しました。2つは現在ほぼ同等です。