MySQL和Oracle中where条件语句的执行顺序

面试的时候你可能遇到过面试官提出:SQL的书写顺序,SQL的执行(解析)顺序,WHERE条件执行顺序等问题。这篇文章就简要总结下上面的几个问题。

一、MySQL中SQL的书写顺序和执行顺序

sql编写顺序:
select distinct…from…join…on…where…group by…having…order by…limit…

sql解析顺序:
from…on…join…where…group by…having…select distinct…order by…limit…

二、MySQL和Oracle中where条件语句的执行顺序

(1)Oracle中where条件语句执行顺序:
从右往左

这里备注下我朋友踩的一个坑,他不踩我还不知道的内容:
  Oracle中where条件从右往左运行,如果最右边条件不满足情况(and连接)返回空的结果,这时候左边的条件他就不会被编译,如果左边的条件是错误的那也是不会报错的,直接返回空,但如果这个错误条件在最右边,那就会直接编译报错。这里也说明下具体情况,如果where后面的字段如果有索引字段,会先执行索引字段了,所以这里如果索引字段写在左边,右边的字段仍是不规范的,这样也不会报错,因为先执行索引字段的条件没有查询到任何结果会直接返回空,右边的字段也就不去执行了,所以并不会编译报错。

我这里并没有在Oracle中进行测试,推荐一篇文章《ORACLE中where部分条件执行顺序测试》

(2)MySQL中where条件语句执行顺序:
从左往右

无论哪个数据库,我们先了解执行顺序后,就需要知道一个规律:
排除越多的条件应该是先执行(数据量多时考虑,数据量少时不用考虑)。

所以Oracle中排除最多的条件放在最后一位,MySQL中排除最少的放在最前一位。
注:分区 索引字段这种第一批次可以过滤大量数据的,应当放在第一执行序位

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值