我想使用短路评估来优化我的查询,如下所示:
查询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
条件(短路评估)是否会导致优化?
在上面的例子中,短路评估究竟如何工作?
答案 0 :(得分:1)
它不会导致优化(好吧,如果数据库引擎中存在错误,这可能会解决错误;)
但我不认为这个问题与short circuit evaluation有关 - 0 and ?
,1 or ?
是短路评估,而不是1 = 0
,0 or ?
,1 and ?
或? and (? or 1 = 0)
加上引擎应该在编译期间从查询中删除or 1 = 0
(=优化查询),但我不知道如何检查生成的字节码,所以我不确定这个...