技术分享 | 详解 MySQL 三表 JOIN

2023年 12月 28日 71.8k 0

常听说 MySQL 中三表 JOIN 的执行流程并不是前两张表 JOIN 得出结果,再与第三张表进行 JOIN;而是三表嵌套的循环连接。

作者:胡呈清,爱可生 DBA 团队成员,擅长故障分析、性能优化,个人博客:[简书 | 轻松的鱼],欢迎讨论。

爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

本文共 2000 字,预计阅读需要 8 分钟。

那这个三表嵌套的循环连接具体又是个什么流程呢?与前两张表 JOIN 得出结果再与第三张表进行 JOIN 的执行效率相比如何呢?下面通过一个例子来分析分析。

前提

关联字段无索引的情况下强制使用索引嵌套循环连接算法,目的是更好的观察扫描行数。

set optimizer_switch='block_nested_loop=off';

表结构和数据如下:

CREATE TABLE `t2` (
`id` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `a` (`a`)
) ENGINE=InnoDB;

drop procedure idata;
delimiter ;;
create procedure idata()
begin
declare i int;
set i=1;
while(i

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论