我正在使用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...))
...
...
SP 确实运行很快。
我之前听说过,有时优化器可以优化条件的顺序。
所以我问:
即使优化器选择了其他路径,比检查if更快
=null
呢?我的意思是,我认为检查if a==null
是多比正在运行的其他长的查询速度更快...如何强制 SQL Server在编写查询时(相同顺序)运行查询?