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班

相关推荐
小吴编程之路5 小时前
MySQL 索引核心特性深度解析:从底层原理到实操应用
数据库·mysql
~莫子5 小时前
MySQL集群技术
数据库·mysql
凤山老林5 小时前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
就不掉头发5 小时前
Linux与数据库进阶
数据库
与衫5 小时前
Gudu SQL Omni 技术深度解析
数据库·sql
咖啡の猫6 小时前
Redis桌面客户端
数据库·redis·缓存
oradh6 小时前
Oracle 11g数据库软件和数据库静默安装
数据库·oracle
what丶k6 小时前
如何保证 Redis 与 MySQL 数据一致性?后端必备实践指南
数据库·redis·mysql
_半夏曲6 小时前
PostgreSQL 13、14、15 区别
数据库·postgresql
把你毕设抢过来6 小时前
基于Spring Boot的社区智慧养老监护管理平台(源码+文档)
数据库·spring boot·后端