SQL查询优化的短路评估

时间:2012-03-09 19:28:12

标签: sql query-optimization short-circuiting

我想使用短路评估来优化我的查询,如下所示:

查询1:

Select emp_id, emp_name 
From emp_table 
Where emp_name = "xyz" 
and emp_id >= 50; 

查询2:

Select emp_id, emp_name 
From emp_table 
Where emp_name = "xyz" 
and (emp_id >= 50 or 1 = 0); 

在查询2中添加or 1 = 0条件(短路评估)是否会导致优化?
在上面的例子中,短路评估究竟如何工作?

1 个答案:

答案 0 :(得分:1)

它不会导致优化(好吧,如果数据库引擎中存在错误,这可能会解决错误;)

但我不认为这个问题与short circuit evaluation有关 - 0 and ?1 or ?是短路评估,而不是1 = 00 or ?1 and ?? and (? or 1 = 0)

加上引擎应该在编译期间从查询中删除or 1 = 0(=优化查询),但我不知道如何检查生成的字节码,所以我不确定这个...