私はSQL Server 2008 R2を使用していますが、この疑似クエリ(SP)があります:
select ...
from ...
WHERE @LinkMode IS NULL
AND (myColumn IN (...very long-running query...))
...
...
問題は、クエリを実行するのに非常に長い時間がかかること@LinkMode=2
です。
お気づきのように、@ LinkModeがnullの場合にのみ長時間実行クエリを実行する必要がありますが、ここではそうではありません。私の場合、@ LinkMode = 2!
ただし、次のように変更すると:
select ...
from ...
WHERE 1=2
AND (myColumn IN (...very long time exeted query...))
...
...
SP は高速で実行されます。
以前に、オプティマイザーが条件の順序を最適化できることを聞いたことがあります。
だから私は尋ねる:
オプティマイザが別のルートを選択した場合でも、次のことを確認するよりも高速なのは何
=null
ですか?私が意味する、私はそのチェックが考えるif a==null
あるずっと速く、他の長いクエリを実行するよりも...どのように私がすることができます強制、私はそれ(同じ順序)書いたとして、クエリを実行するために、SQL Serverの?