一文详解MySQL—Join的使用优化
目录 MySQL JOIN类型 MySQL JOIN 算法 Nested-Loop Join 算法 执行流程 工作原理 时间复杂度分析 Block Nested-Loop Join 算法 执行流程 工作原理 时间复杂度分析 Hash Join 算法 执行流程 build构建 probe 探
目录MySQL JOIN类型MySQL JOIN 算法Nested-Loop Join 算法执行流程工作原理时间复杂度分析Block Nested-Loop Join 算法执行流程工作原理时间复杂度分析Hash Join 算法执行流程build 构建probe 探测阶段如何使用时间复杂度分析NLJ算法优化BNL算法优化Hash Join算法优化
MySQL JOIN类型
MySQL支持多种JOIN类型,下面是每种JOIN类型的简要概述:
INNER JOIN:将两个表中符合条件的行组合在一起。返回的结果集只包含满足连接条件的行,即两个表中都存在的行。一般简写成JOIN
LEFT JOIN:返回左表中的所有行以及符合条件的右表中的行。如果右表中没有匹配的行,则用NULL填充。
RIGHT JOIN:返回右表中的所有行以及符合条件的左表中的行。如果左表中没有匹配的行,则用NULL填充
FULL OUTER JOIN:返回左表和右表中的所有行,如果一个表中没有匹配的行,则用NULL填充。
CROSS JOIN:返回两个表中的所有可能的组合,也称为笛卡尔积。
MySQL JOIN 算法
在了解完 MySQL JOIN类型概念之后,我们来了解 MySQL JOIN 算法,在之前的版本只支持Nested Loop Join这一种算法,在 MySQL 8.0.18之后支持 Hash Join算法。