6.多表连接原理

多表连接原理

1.内连接与外连接

⼀般情况下,我们都把只涉及单表的过滤条件放到WHERE⼦句中,把涉及两表的过滤条件都放到ON⼦句中,我们也⼀般把放到ON⼦句中的过滤条件也称之为连 接条件。

  • 对于内连接的两个表,驱动表中的记录在被驱动表中找不到匹配的记录,该记录不会加⼊到最后的结果集
  • 对于外连接的两个表,驱动表中的记录即使在被驱动表中没有匹配的记录,也仍然需要加⼊到结果集。
    • 在MySQL中,根据选取驱动表的不同,外连接仍然可以细分为2种:
      • 左外连接 选取左侧的表为驱动表。
      • 右外连接 选取右侧的表为驱动表。

2.连接的原理

(1)嵌套循环连接算法

算法思想:主表只要访问一次,而从表会被访问多次。具体访问几遍取决于对主表执行单表查询后的结果集中的记录条数。

示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JJ71XJdq-1686638525208)(C:\Users\10059\AppData\Roaming\Typora\typora-user-images\image-20220830115212859.png)]

对从表建立索引加快访问速度:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d1IlSdJC-1686638525209)(C:\Users\10059\AppData\Roaming\Typora\typora-user-images\image-20220830115705018.png)]

(2)基于块的嵌套循环连接算法

join buffer:存放多条主表查询数据。尽量减少访问从表的次数

通过启动参数或者系统变量join_buffer_size进行配置,默认大小为262144字节(也就是256KB),最小可以设置为128字节。

144字节(也就是256KB),最小可以设置为128字节。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cWOsVB6d-1686638525210)(C:\Users\10059\AppData\Roaming\Typora\typora-user-images\image-20220830135758296.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值