TreeMind树图在线AI思维导图
当前位置:树图思维导图模板IT互联网互联网干货MySQL连接思维导图

MySQL连接思维导图

  收藏
  分享
免费下载
免费使用文件
李青情意重 浏览量:272022-11-09 11:22:43
已被使用1次
查看详情MySQL连接思维导图

MySQL连接思维导图分为连接本质与连接方式

树图思维导图提供 MySQL连接 在线思维导图免费制作,点击“编辑”按钮,可对 MySQL连接  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:8700a1e7607a00dde9e9ce53f822a63b

思维导图大纲

MySQL连接思维导图模板大纲

连接的本质

连接:就是把各个表中的记录取出来依次匹配,并把匹配后的组合发送给客户端

笛卡尔积:连接查询的结果集包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合

连接过程

步骤1:首先确定第一个需要查询的表,称为驱动表

步骤2:步骤1中从驱动表每获取一条记录,都需要到被驱动表中查找匹配的记录

内外连接

外连接:即使匹配不到,仍需加入到结果集中

左外连接:选取左侧的表为驱动表

右外连接:选取右侧的表为驱动表

内连接:驱动表中的记录在北区东表中匹配不到,则该记录不会加入到最后的结果集中

语法:

内连接

JOIN、INNER JOIN、CROSS JOIN、select * from t1,t2

外连接

LEFT [OUTER] JOIN、RIGHT [OUTER] JOIN

JOIN连接算法

Index Nested Loop Join:可以用上被驱动表的索引。简称NLJ

Simple Nested Loop Join:被驱动表用不上索引。此时join会使用BLJ算法

Block Nested Loop Join:使用join buffer存放驱动表记录。简称BLJ

性能问题:1.可能多次扫描被驱动表,占用io。2.判断 join 条件需要执行 M*N 次对比(M、N 分别是两张表的行数),如果是大表就会占用非常多的 CPU 资源。3.可能会导致 Buffer Pool 的热数据被淘汰,影响内存命中率

BNL优化为BKA:1.某些情况下,直接在驱动表上创建索引,直接转成BKA算法。2.使用临时表(低频语句,不适合创建索引情况)

JOIN 优化:

MRR:多范围读取

核心:语句做范围查询的时候得到的多个主键值放入read_rnd_buffer进行排序,排序之后通过主键回表查数据,充分利用顺序读

稳定使用mrr:set optimizer_switch="mrr_cost_based=off"

BKA:NLJ算法的优化

核心:引入BLJ算法的join buffer,同时还使用到了被驱动表的索引

开启BKA:set optimizer_switch='mrr=on,mrr_cost_based=off,batched_key_access=on';(依赖MRR)

过滤条件思维导图模板大纲

where:无论内外连接,凡是不符合where条件的记录都不会加入最后的结果集(为了实现即使使用外连接,也可以不用把驱动表的记录全部加入结果集)

on:如果无法在被驱动表中找到匹配on过滤条件的记录,那么该记录也会加入到结果集,对应的被驱动表记录的各个字段用null表示

驱动表只需要访问一次,被驱动表可能访问多次(称为嵌套循环连接Nested-Loop Join)思维导图模板大纲

1.BKA 优化是 MySQL 已经内置支持的,建议你默认使用;2.BNL 算法效率低,建议你都尽量转成 BKA 算法。优化的方向就是给被驱动表的关联字段加上索引;3.基于临时表的改进方案,对于能够提前过滤出小数据的 join 语句来说,效果还是很好的;思维导图模板大纲

相关思维导图模板

MYSQL数据库思维脑图思维导图

树图思维导图提供 MYSQL数据库思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 MYSQL数据库思维脑图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:10c07e28511056c57eb264a3bfa683f6

MYSQL数据库原理思维导图

树图思维导图提供 MYSQL数据库原理 在线思维导图免费制作,点击“编辑”按钮,可对 MYSQL数据库原理  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:ed02b336d7d98712b4a52a36c6fd35c0