以下は、最適化したいクエリです。最適化のボトルネックは CONDITION_B です。
select @COMPUTE_X = count(distinct TABLEA.COLUMN_T5)
from #TMP_TABLEA TABLEA
inner join TABLEB on TABLEB.ID = TABLEA.ID
left join....
where
(
CONDITION_A --Complex condition
) and
(
CONDITION_B --Complex condition with some functions returning table
)
CONDITION_B を残す上記のクエリの結果を一時テーブルに配置し、その一時テーブルに CONDITION_B を適用すると、パフォーマンスが大幅に向上します。CONDITION_B は、CONDITION_A の結果が false かどうかを常に評価していると思います。
もっと良い方法があれば誰か教えてください。また、短絡操作は SQL クエリ ステートメントで機能しますか? はいの場合、それらの処理の順序は何ですか。