【发布时间】:2012-11-18 17:17:34
【问题描述】:
我正在尝试强制 sql server 对某些字段进行短路或比较。在 Or 的左侧,我有一个简单的变量比较,而在右侧,我有一个非常“繁重”的子查询。
WHERE
(@Var = 'DefaultValue' ) OR
Exists(select * from atable)
如果第一个语句为假,有没有办法只执行 or 语句的右侧。
我尝试过 case 和 if else 语句,但找不到任何有效的语法。
我使用的是 MS SQL 服务器
【问题讨论】:
-
如果这是用于搜索,请阅读 Erland Sommarskog 的 Dynamic Search Conditions in SQL。如果是别的东西,恐怕康拉德是正确的 - 没有保证方法来控制查询中的评估顺序(包括任何 CTE 或子查询)
-
@Damien_The_Unbeliever 感谢您将我指向这篇文章。这应该让我和我的同事们在这个周末读到一些东西:D
标签: sql sql-server performance shortcut