区别:

    1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录

    2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

结论:

    1. 对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需把条件放到where后面

    2. 对于inner join,满足on后面的条件表的数据才能查出,可以起到过滤作用。也可以把条件放到where后面。

参考链接: 点击跳转


通过 explain 关键字可以查看 Extra 字段的反馈


* explain 主要看 type,key,filtered,extra 4个字段

* type: ALL < index < range ~ index_merge < ref < eq_ref < const < system , ALL 最差

* key:是确定使用的哪个index,如果这里没有显示任何key,说明你需要创建index

* filtered:是指筛选率,越低,说明越差

* Extra: 最好是 NULL 或者 Using index, 如果是 Using temporary 就比较差了


关于 explain 的说明,参考链接: 点击跳转
  

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部