【发布时间】:2009-02-12 18:12:45
【问题描述】:
假设我有一个类似下面的 sql 语句,变量 @FOO 在代码的前面设置:
SELECT FIELDLIST
FROM TABLE
WHERE
(FIELD = @FOO OR @FOO IS NULL)
查询优化器是否足够聪明,可以先执行 OR 的第二面(@FOO IS NULL),因为(另一个假设)执行空值检查比执行字段比较更快?
我进行了一些非正式的基准测试,不仅没有发现差异,而且在我的尝试中得到了不同的结果时间,这使我无法进行适当的比较。
【问题讨论】:
-
你确定你需要把时间花在那些事情上吗?看看卢克关于 SQL 是什么和不是什么的回答......并尝试更广泛地看待这个问题:如果这样一个简单的查询对你来说是一个问题,也许你调用它太多次......
-
很确定他只是用这个作为一个理论例子来证明他的观点/问题,即你是否可以使用 SQL 优化器的变量查询......