兩表連線三:合併連線
一、概念
合併連線: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/8494287/viewspace-1356151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle的表連線方法(一)排序合併連線Oracle排序
- Oracle表連線操作——Merge Sort Join(合併排序連線)Oracle排序
- 兩表連線一:巢狀迴圈連線巢狀
- SQL 三表連線SQL
- Oracle的表連線方法(三)雜湊連線Oracle
- 使用 jOOQ 連線兩個表
- 【SQL】表連線 --半連線SQL
- Oracle查詢轉換(三)外連線檢視合併Oracle
- DB2 SQL之行合併(連線)DB2SQL
- 表連線方式及使用場合
- Oracle 表連線方式詳解(外連結、內連線、自連線)Oracle
- sql 連線查詢例項(left join)三表連線查詢SQL
- Oracle的三種表連線方式Oracle
- 表連線cost
- Oracle 表連線Oracle
- 表連線方法
- 表連線概念
- 排序合併連線(sort merge join)的原理排序
- 內連線、左連線、右連線
- 兩個介面的連線
- KCSQL SERVER實現連線與合併查詢dinSQLServer
- 水煮oracle31----連線查詢&合併查詢Oracle
- 表連線型別型別
- ORACLE 表連線方式Oracle
- 排序和表連線排序
- 表連線概念(轉)
- oracle表連線方式Oracle
- Oracle表連線操作——Hash Join(雜湊連線)下Oracle
- Oracle表連線操作——Hash Join(雜湊連線)上Oracle
- 例項解析外連線 內連線 自連線 全連線
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- Linux配置支援高併發TCP連線(socket最大連線數)LinuxTCP
- 內連線、外連線
- 連線和半連線
- 左連線,右連線
- Oracle的表連線方法(二)巢狀迴圈連線Oracle巢狀
- 02-線性結構1 兩個有序連結串列序列的合併 (15分)