oracle三種表連接方式


1、 排序合並連接(Sort Merge Join)

排序合並連接的執行過程如下所示:

* 將每個行源的行按連接謂詞列排序

* 然后合並兩個已排序的行源,並返回生成的行源

例如:

select * from employees d,departments t where d.department_id=t.department_id;
訪問機制如下:訪問departments表並排序department_id列,訪問employees表並排序department_id列,然后依次交替比較、歸並。

注意:排序合並連接一般用在兩張表中沒有索引,並且連接列已經排好序的情況下。

 

2、嵌套循環連接(Nested Loops Join)

* 兩個表中的一個被定義為“外部表”(或“驅動表”)

* 另一個表被稱為“內部表”

* 將針對外部表中的每一行檢索內部表中所有匹配的行

注意:join的順序很重要,一般選擇小表作為“驅動表”,大表作為“內部表”。如兩個表,一個100行,一個10000行,理想的連接方式是:100行的小表作為“驅動表”,10000行的大表作為“內部表”,用小表中的每條記錄去匹配大表中的記錄。如果兩張表的連接詞在大表中是索引列,則是最完美的。

 

3、 哈希連接(Hash Join)

* 優化器對小表利用連接鍵在內存中建立hash表

* 掃描大表,每得到一條記錄,就來hash表中“探測”一次,找出與hash表匹配的行

注意:Hash Join 是CBO做大數據集連接時的常用方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM