select *
from table1 t1
where
t1.somedate between UDF(date1) and UDF(date2)
UDF: ユーザー定義関数
これUDF(date1)
とUDF(date2)
は、 の各行ごとに評価されますt1
。
これにより、パフォーマンスが低下します。
私が試した2番目のオプション
declare @a datetime, @b datetime
set @a=UDF(date1)
set @b=UDF(date2)
select *
from table1 t1
where
t1.somedate between @a and @b
これでも結構時間がかかります。
何が原因で、何が回避策になるのでしょうか。
私が書くなら
select *
from table1 t1
where
t1.somedate between date1 and date2
その非常に高速です。約3秒かかります。上記のクエリには 2 ~ 3 分かかります。