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 = 00 or ?1 and ?? and (? or 1 = 0)

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

【讨论】:

以上是关于SQL 查询优化的短路评估的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询优化

SQL Server查询优化中的两个选项

MySQL查询优化器工作原理解析

MySQL查询优化器工作原理解析

SQL Server 查询表值参数的短路 EXISTS 语句

SQL Server查询表值参数的短路EXISTS语句