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班

相关推荐
zjy2777711 分钟前
Layui tab选项卡如何动态根据ID值进行程序化切换
jvm·数据库·python
m0_6028577614 分钟前
Redis如何修复槽位分配重叠的脏状态_使用redis-cli --cluster fix工具扫描并修复不一致的Slot
jvm·数据库·python
hljqfl15 分钟前
Oracle存储结构
数据库·oracle
2301_7662834428 分钟前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
y = xⁿ34 分钟前
Redis八股学习日记:布隆过滤器
数据库·redis·学习
qq_2837200538 分钟前
Python3 模块精讲:pymysql(第三方)- 连接 MySQL
mysql·adb·pymysql
悟纤43 分钟前
Seedance 2.0 API 文生视频 |支持100并发 | [灵龙AI API]
数据库·文生视频·seedance 2.0
czlczl200209251 小时前
MySQL 性能优化:前缀索引(Prefix Index)深度解析
数据库·mysql·性能优化
逍遥德1 小时前
SpringBoot数据库连接池HikariCP,Druid,Tomcat JDBC,DBCP2,c3p0配置使用
数据库·spring boot·tomcat
小菜同学爱学习2 小时前
第一章 初识达梦数据库:基础认知与环境准备
数据库·达梦