您现在的位置是:主页 > 技术领域 > MySQL > MySQL

left join 为啥比 inner join 更快

追风 2021-11-26 MySQL 人已围观

简介这个是之前跟朋友一起讨论的问题,一开始的时候,我没有想明白,一直以为inner join只考虑on条件相等就好了,所以一直感觉应该是 inner join更快一些下面。下面我们来一起探讨一下,请

Mysql sql语句 执行顺序是 from -> on -> join-> where->select->limit(当然中间还会有很多 什么group by 呀,having呀巴拉巴拉的一堆,) 最开始我一直想不明白是因为,一直觉得inner join 并没有再去做补充,应该速度更快,也就是说Sql语句执行完from产生了 一个 笛卡尔乘积(A表数据*B表数据) 临时表VT1,然后执行ON 把符合条件的全部拿出来生成VT2,这个时候 我的理解开始出现偏差,因为 认为的是既然既然我不用去做补充,那么,我岂不是只要拿出来两边都有数据而且能匹配的上的就行了.(错误理解:ON的时候已经达到的inner join的条件),后来,看到了两张图,看到之后,才意识到,少想了一步:


第一张图:Inner

第二张图:left

看到这个图的时候,我才想明白了.固定表...left join其实是为了固定表,inner join等于是扫描了两次 一次A表 一次B表(因为要兼顾两张表都有数据), 而 left join 只是扫描了一次,左表,left join只管左表有数据就可以了,没必要去管右侧表有没有数据。

文章评论