完了するのに時間がかかりすぎるため、非常に複雑なSQLクエリを最適化しようとしています。
クエリでは、同じ関数を多数使用してSQLステートメントを動的に作成したため、各関数が何度も呼び出されるのではなく、1回だけ呼び出される一時テーブルを作成しました。これにより、実行時間が3/4に短縮されました。
だから私の質問は、たとえば、1,000のdatediff計算が100に狭められた場合、多くの違いが見られると期待できますか?
編集:クエリは次のようになります:
SELECT DISTINCT M.MID, M.RE FROM #TEMP INNER JOIN M ON #TEMP.MID=M.MID
WHERE ( #TEMP.Property1=1 ) AND
DATEDIFF( year, M.DOB, @date2 ) >= 15 AND DATEDIFF( year, M.DOB, @date2 ) <= 17
これらは文字列として動的に生成され(ビット単位でまとめられ)、実行されるため、各反復に沿ってさまざまなパラメーターを変更できます。主に、あらゆる種類のDATEDIFFクエリを含む最後の行です。
これらのdatediffがこのように計算されているこのようなクエリは約420あります。それらすべてを簡単に一時テーブルに取り込むことができることを知っています(1,000のdatediffは50になります)-しかし、それだけの価値はありますか?それは数秒で何か違いがありますか?10分の1秒よりも良い改善を望んでいます。