Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Nested-Loop Join Algorithms

10.2.1.7 嵌套循环连接算法

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

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

假设使用简单的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算法会将行从外部循环传递给内部循环,因此在执行内部循环时,通常需要多次读取被处理的表。