首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 三大表連接技術原理與選擇策略

     編輯:Oracle 資料庫相關知識

1. 巢狀迴圈連接

運作機制:將資料集分為外層(驅動表)與內層(被驅動表)。外層執行一次,內層執行次數等於外層回傳列數。對內層表的連接欄位需有索引支援。

優點:記憶體耗用極低。

適用場景:驅動資料集小(<1萬筆)、被驅動表有高選擇性索引、OLTP 高頻小量查詢。

2. 排序合併連接

運作機制:分別對兩資料集依連接鍵排序(儲存於工作區),再合併比對。排序成本高,相關參數 SORT_AREA_SIZE、SORT_AREA_RETAINED_SIZE(PGA 管理)。

適用場景:無合適索引、大量資料連接、連接條件為非等值(如 >、<)、並行查詢環境。

3. 雜湊連接

運作機制:以較小表建立雜湊表(Build Input),較大表逐列探測。僅支援等值連接。記憶體參數 HASH_AREA_SIZE(PGA)。

關鍵原則:小表建雜湊,大表探測。執行計畫中小表顯示在前。

適用場景:大量資料等值連接、資料倉庫、星狀查詢、無索引或索引選擇性差。

選擇決策樹

條件建議連接方式
驅動集小 + 被驅動表有索引Nested Loop
大量資料 + 等值連接 + 足夠 PGAHash Join
大量資料 + 非等值連接 / 排序已完成Sort Merge Join
並行查詢環境Hash Join / Sort Merge(視參數)

調優提示

  • 使用 Hint 強制指定:/*+ USE_NL(t1 t2) */、/*+ USE_HASH(t1 t2) */、/*+ USE_MERGE(t1 t2) */。
  • 確保統計資料最新,讓優化器自動選擇最佳路徑。
  • 監控 V$SQL_WORKAREA_ACTIVE 觀察排序/雜湊區域記憶體使用與 Temp 寫入情況。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved