表连接中的驱动表与被驱动表

mysql中的表连接分为三种

1. 左连接 left join
左连接以左表为基础,查询出左表所有数据并且去匹配右表的数据,如果右表没
有数据,则为空

2. 右连接 right join
右连接以右表为基础,查询出右表所有数据并且去匹配左表的数据,如果左表没
有数据,则为空

3. 内连接 inner join
内连接会把左右表匹配的数据查询出来,不存在的数据直接忽略

驱动表与被驱动表的概念
驱动表是表连接中的基础表,也就是通过驱动表的数据结果集作为循环基础数据,然后一条一条的通过这个结果集的数据作为过滤条件到被驱动表中查询数据,然后合并

驱动与被驱动
左连接中 左表是驱动表,右表是被驱动表
右连接中 右表是驱动表,左表是被驱动表
内连接中 表数据量较小的表会由mysql自动选择作为驱动表去驱动大表
有一个重点是,如果where条件存在的话 mysql会根据where实际条件进行驱动表的选择
sql优化中,一个比较重要的点就是要用小表驱动大表

原因
mysql表关联的算法,是通过驱动表去循环被驱动表,比如说,20w的大表和200条的小表,如果大表驱动,那么是20w条记录外循环,内循环200条去连接查找,需要通过20w次连接,如果小表驱动,那么是200条记录外循环,内循环20w条去连接查找,只需要通过200次连接就可以了,并且驱动表是不会使用索引的

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一般的项目开发中,多表查询是必不可少的。而对于存在大量数据的情况下,简单的查询已经无法满足性能需求。这就需要对表...
    _Zy阅读 7,468评论 0 11
  • 搞数据库一个避不开的概念就是Join,翻译成中文就是连接。相信很多小伙伴在初学连接的时候有些一脸懵逼,理解了连接的...
    tracy_668阅读 291评论 0 2
  • 1 作用 在MySQL中join操作被称为连接,作用是能连接多个表的数据(通过连接条件),从多个表中获取数据合并在...
    X先生说阅读 811评论 0 0
  • 概述 相信有开发或DBA小伙伴,对于mysql处理多表关联方式或者说性能方面一直不太满意,对于开发提交的join查...
    Sunny捏阅读 834评论 0 0
  • 1. Join语法 内连接:只返回满足条件的数据 INNER JOIN语法: 返回的数据是: 外连接:外连接又分为...
    小胖学编程阅读 2,197评论 0 2