認識巢狀迴圈聯結

巢狀迴圈聯結 (也稱為「巢狀循環」) 使用一個聯結輸入做為外部輸入資料表 (在圖形執行計畫中顯示為上方的輸入),另一個做為內部 (下方) 輸入資料表。外部迴圈會逐列消耗外部輸入資料表。內部迴圈 (針對外部每一列各執行一次) 會在內部輸入資料表中搜尋符合的資料列。

在最簡單的情況下,搜尋會掃描整個資料表或索引;這稱為「單純巢狀迴圈聯結」。如果搜尋利用到索引的話,就稱為「索引巢狀迴圈聯結」。如果建立索引是查詢計畫中的一部份 (並且在查詢完成時毀掉),就稱為「暫存索引巢狀迴圈聯結」。查詢最佳化工具會將這些變化全部列入考慮。

如果外部輸入相當小,內部輸入已預先建立索引而且很大的話,巢狀迴圈聯結會特別有效率。在許多小型交易中 (如只影響一小組資料列的交易),索引巢狀迴圈聯結比合併聯結與雜湊聯結要好得多。然而在大型查詢中,巢狀迴圈聯結多半不是最佳選擇。