文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  巢狀迴圈聯結演算法

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 演算法會一次一個地將列從外部迴圈傳遞到內部迴圈,因此通常會多次讀取內部迴圈中處理的資料表。