Oracle三種表連接技術
Oracle有三種表連接技術,分別是嵌套連接、合並連接和哈希連接。
1. 嵌套循環連接(jiē) (NESTED LOOP Join)
嵌套連接把要處理的數據集分為外循環(驅動數據源)和內循環(被驅(qū)動數據源(yuán)),外(wài)循環隻執行一次(先執(zhí)行),內循環執行的次數等於外循環(huán)執行的(de)數(shù)據集個數(shù)。
這種連接的好處是內存使用非常少。
如果驅動數(shù)據源(yuán)有限,且被驅動表在連接列上有相應的索(suǒ)引,則這(zhè)種連接(jiē)方式(shì)才是高效的。
在OLTP係統上常見到這種連接方式。
2. 排(pái)序合並連接 (Sort Merge Join)
顧名思義,排序合並就是先分別對待連接的數據集(jí)進行排序,然後再合(hé)並,其執行過程大致(zhì)為:對表A的數據(jù)集進行排序,排序結果保(bǎo)存的工作區A中;對表B的數據集進行排序(xù),排序結果(guǒ)保存在工作區B中;最後合(hé)並工作區A和B中的數據。
對(duì)這種連接方法(fǎ),排序的開銷是非(fēi)常大的(de),和排序工作區(qū)相關的內存參數有:sort_area_size和(hé)sort_area_retained_size,都在在PGA中。
3. 哈希連接 (Hash Join)
哈希連接處理的兩個數據集分別(bié)稱為構造輸入(build input)和探測輸入(probe input),構造輸入的每行記(jì)錄用於構造哈希(xī)表,探測(cè)輸入的每行記錄對哈希表進(jìn)行探測,以找出符合連(lián)接條件的記錄(lù)。
將較小的表作為構造輸入(rù),較大的表作為探測輸入,這樣哈希連接的效率(lǜ)才比較高,在執行計(jì)劃(huá)中,較小的輸入表在(zài)前麵,較大的探(tàn)測表在後麵。
哈希連接隻有在相等連(lián)接的條件下才能進行。
和哈希表工作區相(xiàng)關的內存參數有:hash_area_size,也在(zài)PGA中(zhōng)。
關鍵詞:Oracle
閱讀本文後您(nín)有什麽感(gǎn)想? 已有 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0