ローカル変数の代わりに 1 行テーブルを使用することによって、パフォーマンスが大幅に低下したり、その他の悪影響はありますか?
それ以外の:
Declare @DT date = getdate()
使用する:
Select convert(date, getdate()) as DT into #DT
これを行う理由は、コードのテストのためです。コードのチャンクだけを実行したい場合、コードが 100 行下にあり、実行するためにいくつかの宣言が必要な場合は面倒です。
それ以外の:
Line 104 select
Line 105 somecolumn
Line 106 where datadate = @DT
-- MUST DECLARE SCALAR @DT, EVEN THOUGH LINES 1-103 WERE PREVIOUSLY RUN
使用する:
Line 104 select
Line 105 somecolumn
Line 106 where datadate = (select DT from #DT)
-- NO ISSUE EXECUTING ONLY THESE 3 LINES, SINCE LINES 1-103 WERE PREVIOUSLY RUN
これが実行時間に関して同じであるかどうかを知る必要があるだけで、精度は向上します。サブクエリが何度も実行されることはわかっていますが、#DT は 1 行 (および 1 列) であるため、遅延が発生し始めるのはいつでしょうか?