MySQL 8.4 发行说明
MySQL 使用嵌套循环算法或其变体来执行表之间的连接。
简单的嵌套循环连接 (NLJ) 算法一次读取一个表的第一张表的行,将每行传递给处理连接中下一个表的嵌套循环。此过程重复进行,直到剩余所有要连接的表。
假设要执行三个表 t1
、t2
和 t3
之间的连接,使用以下连接类型
Table Join Type
t1 range
t2 ref
t3 ALL
如果使用简单的 NLJ 算法,连接将按以下方式处理
for each row in t1 matching range {
for each row in t2 matching reference key {
for each row in t3 {
if row satisfies join conditions, send to client
}
}
}
由于 NLJ 算法一次从外部循环传递一行到内部循环,因此它通常多次读取在内部循环中处理的表。