兩表連線三:合併連線

dbhelper發表於2014-12-04

一、概念

合併連線:MERGE JOIN,也叫排序合併連線,進行合併連線的時候,兩個資料集都會被讀出來,並按照連線條件的欄位進行排序。當這些操作完成,兩個工作區的內容就會被合併。

 

二、特點

  • 每個子節點只會執行一次。
  • 每個輸入資料集都必須按照連線條件的欄位進行排序。
  • 由於這些排序操作,在返回結果集的第一條記錄之前,兩個輸入資料集都必須被完全讀出並排序。
  • 所有的連線型別都支援合併連線。
  • 合併連線並不是經常使用。原因是大部分情況下,合併連線的效率不如巢狀迴圈連線和雜湊連線。無論如何,這種連線方法是必要的,因為只有他才支援所有型別的連線;

三、執行步驟

 

 

四、合併連線的測試

 

測試環境:

資料庫版本:11.2.0.3

表:SCOTT.DEPT

表: SCOTT.EMP

 

select /*+ ordered use_merge(EMP) */*

FROM SCOTT.DEPT T1,SCOTT.EMP T2

WHERE T1.DEPTNO=T2.DEPTNO;

執行計劃的解讀如下:

1.表DEPT上面有主鍵索引PK_DEPT,所以通過這個索引去獲取資料,讀取資料的時候直接進行排序;

2.對錶EMP記錄通過一次全表掃描讀出,然後進行SORT的排序;

3.兩個資料集進行連線,結果記錄返回;

4.根據執行的原理可以明白,合併連線的最大的侷限是不能有效的利用索引來處理連線條件。索引只能作為排序操作之前的房屋路徑去評估限制條件。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN

ORACLE技術部落格:ORACLE 獵人筆記               資料庫技術群:367875324 (請備註ORACLE管理 )  

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12679300/viewspace-1179414/,如需轉載,請註明出處,否則將追究法律責任。

相關文章