MySQL 联合查询执行原理:多表笛卡尔积

MySQL 联合查询执行原理:多表笛卡尔积

在 MySQL 执行多表联合查询时,如果没有指定连接条件(如 JOIN...ONWHERE),系统会执行最基础的笛卡尔积运算。

1. 基础数据准备

学生表 (Table A)

id (编号) name (姓名) gender (性别)
1 张三
2 李四
3 王五
4 赵六

班级表 (Table B)

id (编号) name (班级)
1 1班
2 2班

2. 笛卡尔积的执行过程

对多张表进行笛卡尔积时,MySQL 会遵循以下逻辑进行组合:

  1. 取第一条记录:先从第一张表(学生表)中取出第一条记录(张三)。
  2. 全量组合 :将这条记录分别与第二张表(班级表)中的每一条记录进行组合,生成新的记录。
  • 张三 + 1班 生成第1条结果
  • 张三 + 2班 生成第2条结果
  1. 循环往复:接着取出学生表的第二条记录(李四),再次与班级表的所有记录组合。
  2. 最终结果 :直到遍历完第一张表的所有行,得到一个全排列结果集

3. 联合查询结果集 (全排列)

最终生成的查询结果如下表所示:

id 姓名 性别 班级.id 班级名
1 张三 1 1班
1 张三 2 2班
2 李四 1 1班
2 李四 2 2班
3 王五 1 1班
3 王五 2 2班
4 赵六 1 1班
4 赵六 2 2班

相关推荐
rising start8 小时前
二、全面理解MySQL架构
mysql·架构
星星也在雾里8 小时前
PgBouncer 解决 PostgreSQL 连接数超限 + 可视化监控
数据库·postgresql
bqq198610268 小时前
MySQL性能优化
mysql·mysql优化
雨辰AI10 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城202410 小时前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
常常有10 小时前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql
Mr. zhihao11 小时前
深入解析redis基本数据结构
数据结构·数据库·redis
m0_7488394911 小时前
利用天正暖通CAD快速掌握风管数量统计的方法
数据库
随身数智备忘录11 小时前
什么是设备管理体系?设备管理体系包含哪些核心模块?
网络·数据库·人工智能
海市公约11 小时前
MySQL更新语句执行全流程:从Buffer Pool修改到二阶段提交
数据库·mysql·binlog·innodb·undo log·二阶段提交·update执行原理