Я использую SQL Server 2008 R2 и у меня есть этот псевдопросмотр (SP):
select ...
from ...
WHERE @LinkMode IS NULL
AND (myColumn IN (...very long-running query...))
...
...
Проблема в том, что выполнение запроса занимает очень много времени - даже если я выполняю SP с @LinkMode=2
.
Как вы заметили, длительный запрос должен выполняться, только если @LinkMode имеет значение null, а здесь это не так. В моем случае @LinkMode = 2!
Однако, если я изменю это на:
select ...
from ...
WHERE 1=2
AND (myColumn IN (...very long time exeted query...))
...
...
СП действительно работать быстро.
Я слышал раньше, что иногда оптимизатор может оптимизировать порядок критериев.
Поэтому я спрашиваю:
Даже если оптимизатор выберет другой маршрут, что может быть быстрее проверки
=null
? Я имею в виду, я думаю , что проверкаif a==null
является гораздо быстрее , чем при запуске другого длинного запроса ...Как заставить SQL Server выполнить запрос, как я его написал (в том же порядке)?
источник