文档主页
MySQL 9.0 参考手册
相关文档 下载本手册

MySQL 9.0 参考手册  /  ...  /  嵌套循环连接算法

10.2.1.7 嵌套循环连接算法

MySQL 使用嵌套循环算法或其变体来执行表之间的连接。

嵌套循环连接算法

一个简单的嵌套循环连接 (NLJ) 算法一次读取第一个表中的一行,将每行传递给一个嵌套循环,该循环处理连接中的下一个表。这个过程会重复执行,直到所有要连接的表都处理完为止。

假设要使用以下连接类型执行三个表 t1t2t3 之间的连接

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 算法一次将一行从外部循环传递到内部循环,因此它通常会多次读取在内部循环中处理的表。