on和where的执行顺序

on和where的执行顺序

请问老师 on和where谁先执行 还是一起执行


http://img1.sycdn.imooc.com//climg/60db27b30926332109900131.jpg


这个ON 后面的条件其实可以一起写到后面的where中

http://img1.sycdn.imooc.com//climg/60db27c5092d2ff109960133.jpg


运行结果也是正确的

我想问一下 这两种写法的执行效率一样吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2021-06-30 11:12:58

同学你好,1、同学可以这样理解on与where:

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。比如:在使用left jion时,on和where条件的区别如下:

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

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

所以是on先执行,然后where再执行。

    2、如上所示,可知这两条sql语句执行效率不同,每在where中增加一个条件,条件判断多一层,相应的执行效率就会慢一些。

祝学习愉快~


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师