SQL 查询优化的短路评估
Posted
技术标签:
【中文标题】SQL 查询优化的短路评估【英文标题】:Short circuit evaluation for SQL query optimisation 【发布时间】:2012-03-27 05:52:21 【问题描述】:我想使用以下短路评估优化我的查询:
查询一:
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
条件(短路评估)会导致优化吗?
在上面的例子中,短路评估究竟是如何工作的?
【问题讨论】:
相关,和 IMO 重复:***.com/questions/789231/… 【参考方案1】:它不会导致优化(好吧,如果数据库引擎中存在错误,它可能会解决该错误;)
但我认为这个问题与 short circuit evaluation 无关 - 0 and ?
、1 or ?
是短路评估,而不是 1 = 0
、0 or ?
、1 and ?
或 ? and (? or 1 = 0)
加上引擎应该在编译期间从您的查询中删除 or 1 = 0
(= 优化查询),但我不知道如何检查生成的字节码,所以我不确定这个...
【讨论】:
以上是关于SQL 查询优化的短路评估的主要内容,如果未能解决你的问题,请参考以下文章