美文网首页数据库
mysql表连接算法

mysql表连接算法

作者: Rena的秘密 | 来源:发表于2022-09-14 17:38 被阅读0次

一.NLJ算法(嵌套循环连接算法)

假如A表数据存在10000条数据,且A表数据中字段a是加了索引的;B表数据存在100条数据;

执行select * from A inner join B on A.a=B.a

执行过程:

1.先把B表从磁盘上读取一条;读取A表的二级索引字段A,读取到A表的id,回表读取聚簇索引,找到对应的记录,读取磁盘一次;执行完成读取磁盘200次。

二.BNL算法(基于块的嵌套循环连接算法)

假如A表数据存在10000条数据,且A表数据中字段a是没有加索引的;B表数据存在100条数据;

执行select * from A inner join B on A.a=B.a

执行过程:

1.先把B全表扫描,加载到join_buffer内存中,相当于磁盘读取100次

2.因为A表不存在索引,只能全表扫描聚簇索引,然后读取到一条记录会与join_buffer中的数据的字段a做比较(所以A表磁盘读取10000次,

整体执行过程内存计算1000000次、磁盘读取10100次)

如果不使用算法执行过程:

1.先把B全表扫描一行,然后使用聚簇索引全表扫描A表,执行完成读取磁盘1000000次。

表连接优化:

1.在关联字段上加上索引。

2.尽量小表作为驱动表,大表作为被驱动表。

相关文章

  • mysql表连接算法

    一.NLJ算法(嵌套循环连接算法) 假如A表数据存在10000条数据,且A表数据中字段a是加了索引的;B表数据存在...

  • 2019-05-15MYsql 查询成功优化

    连接查询的成本 我们前边说过,MySQL中连接查询采用的是嵌套循环连接算法,驱动表会被访问一次,被驱动表可能会被访...

  • MySQL+关联(下)

    飞谷云 MySQL 第3讲 MySQL+表连接(下) 一、MySQL+表连接(下) 1、内连接(inner joi...

  • MySQL 临时表

    临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。 使用PHP脚本来创建MySQL临时表...

  • Mysql 相关

    MySQL索引 MySQL索引背后的数据结构及算法原理 覆盖索引和回表操作 MySQL性能优化 MySql表分区详...

  • Mysql 语句

    Mysql 语句 Mysql 语句以考察各种常用连接为重点 几种常见连接 内连接(INNER JOIN):两个表都...

  • MySQL 基本内容

    MySQL的基础 MySQL 数据类型 SQL mode 多表查询代价高一张表——>两个表——>需要连接连接 需要...

  • mysq临时表

    MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接...

  • Mysql的连接

    Mysql内连接=等值连接就相当于求两个表的相同处表1 表2 内连接语法 实例 left join on以左表为主...

  • mysql表连接

    当同时要现实多张表中的数据库时,可以会用表连接来完成这样的需求。从大类上分,表连接分为内连接和外连接,他们的区别主...

网友评论

    本文标题:mysql表连接算法

    本文链接:https://www.haomeiwen.com/subject/zbhlortx.html