在Sql Server 2005中,当我有多个参数时,我是否保证评估顺序将始终为是从左到右?选择“where子句”评估顺序
使用的一个示例:
select a from table where c=1 and d=2
在该查询中,如果 “C = 1” 状态失败 “d = 2” 条件将永远不会被评估?
PS-“c”是一个整数索引列,d是一个大的varchar和非可索引的列,需要全表扫描
更新我试图避免执行两个查询或条件语句,我只需要这样的:如果“c条件”失败,有一种方法可以避免执行沉重的“d条件”,因为在我的情况下不需要。
换句话说:NO。 SQL Server会以它认为最快的方式重新排列你的条件。如果你的条件有副作用(可能通过udf函数调用),这可能会导致问题。 – 2009-01-27 16:56:45
将UDF放入WHERE子句可能会非常缓慢。我们或多或少不得不取缔他们的表现如此糟糕。 – Joe 2009-01-27 16:59:57
这不太正确。 – 2009-01-27 17:27:04