在MySQL中left right join联表的原理

前言
join语句只要做过SQL查询的时候基本上一定使用过,那么join语句的优化一直都是一个头痛的问题,怎么在联表的情况下尽可能的减少扫描行数,大幅度提供联表的查询效率,下面我对这个join语句的原理进行详细的讲解,看完之后,就可以做到心中有数,根据实际情况灵活的对join语句进行优化啦

join常见三种联表
INNER JOIN
可以简写成join

只返回两个表中匹配的行

包含两个表中都存在的记录

本质上就是返回两个表的交集

LEFT JOIN
返回左表的所有行,即使右表中没有匹配

包含左表所有记录

右表没有匹配时,右表列显示为NULL

左表是驱动表

RIGHT JOIN
返回右表的所有行,即使左表中没有匹配

包含右表所有记录

左表没有匹配时,左表列显示为NULL

右表是驱动表

join联表的原理
join关键字是把两个表分为驱动表和被驱动表的

left join 驱动表是左表

right join 驱动表是右表

inner join 也是有驱动表的概念的,因为这个关键字是求的交集,所以它会先检查实际参与关联的行数,就是两个表关联数据都不为空的行数,然后会优先选择参与关联行数少的表作为驱动表

join语句的执行过程 驱动表是⾛全表扫描,被驱动表是⾛搜索

取驱动表中的一条数据,使用这条数据匹配被驱动表的数据,合成把这些数据关联在一起

以此类推,直到驱动表中的数据扫描完毕结束

扫描行数越少,SQL执行效率越高,所以一般来说,我们的优化SQL中join语句目标就可以确定了

1、选择行数较少的表作为驱动表

2、对被驱动表的联接字段建立索引增加被驱动表的查询效率

3、驱动表不一定是具体的表,也可以是过滤后的临时结果集

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » 在MySQL中left right join联表的原理

提供最优质的资源集合

立即查看 了解详情