運作機制:將資料集分為外層(驅動表)與內層(被驅動表)。外層執行一次,內層執行次數等於外層回傳列數。對內層表的連接欄位需有索引支援。
優點:記憶體耗用極低。
適用場景:驅動資料集小(<1萬筆)、被驅動表有高選擇性索引、OLTP 高頻小量查詢。
運作機制:分別對兩資料集依連接鍵排序(儲存於工作區),再合併比對。排序成本高,相關參數 SORT_AREA_SIZE、SORT_AREA_RETAINED_SIZE(PGA 管理)。
適用場景:無合適索引、大量資料連接、連接條件為非等值(如 >、<)、並行查詢環境。
運作機制:以較小表建立雜湊表(Build Input),較大表逐列探測。僅支援等值連接。記憶體參數 HASH_AREA_SIZE(PGA)。
關鍵原則:小表建雜湊,大表探測。執行計畫中小表顯示在前。
適用場景:大量資料等值連接、資料倉庫、星狀查詢、無索引或索引選擇性差。
| 條件 | 建議連接方式 |
|---|---|
| 驅動集小 + 被驅動表有索引 | Nested Loop |
| 大量資料 + 等值連接 + 足夠 PGA | Hash Join |
| 大量資料 + 非等值連接 / 排序已完成 | Sort Merge Join |
| 並行查詢環境 | Hash Join / Sort Merge(視參數) |
/*+ USE_NL(t1 t2) */、/*+ USE_HASH(t1 t2) */、/*+ USE_MERGE(t1 t2) */。V$SQL_WORKAREA_ACTIVE 觀察排序/雜湊區域記憶體使用與 Temp 寫入情況。