Oracle 三種表連線演算法總結

2021-08-27 12:17:13 字數 534 閱讀 4900

oracle有三種表連線技術,分別是巢狀連線、合併連線和雜湊連線。

巢狀連線把要處理的資料集分為外迴圈(驅動資料來源)和內迴圈(被驅動資料來源),外迴圈只執行一次(先執行),內迴圈執行的次數等於外迴圈執行的資料集個數。

這種連線的好處是記憶體使用非常少。

如果驅動資料來源有限,且被驅動表在連線列上有相應的索引,則這種連線方式才是高效的。

在oltp系統上常見到這種連線方式。

顧名思義,排序合併就是先分別對待連線的資料集進行排序,然後再合併,其執行過程大致為:對錶a的資料集進行排序,排序結果儲存的工作區a中;對錶b的資料集進行排序,排序結果儲存在工作區b中;最後合併工作區a和b中的資料。雜湊連線處理的兩個資料集分別稱為構造輸入(build input)和探測輸入(probe input),構造輸入的每行記錄用於構造雜湊表,探測輸入的每行記錄對雜湊表進行探測,以找出符合連線條件的記錄。

將較小的表作為構造輸入,較大的表作為探測輸入,這樣雜湊連線的效率才比較高,在執行計畫中,較小的輸入表在前面,較大的探測表在後面。

雜湊連線只有在相等連線的條件下才能進行。

Oracle 三種表連線演算法總結

oracle 三種表連線演算法總結 oracle有三種表連線技術,分別是巢狀連線 合併連線和雜湊連線。1.巢狀迴圈連線 nested loop join 巢狀連線把要處理的資料集分為外迴圈 驅動資料來源 和內迴圈 被驅動資料來源 外迴圈只執行一次 先執行 內迴圈執行的次數等於外迴圈執行的資料集個數。...

oracle三種表連線方式

nested loop 對於被連線的資料子集較小的情況,nested loop連線是個較好的選擇。nested loop就是掃瞄乙個表,每讀到一條記錄,就根據索引去另乙個表裡面查詢,沒有索引一般就不會是 nested loops。一般在nested loop中,驅動表滿足條件結果集不大,被驅動表的連...

oracle 三種表連線方式

oracle 小知識 1.oracle 檢視表大小 select sum t.bytes 1024 1024 1024 from dba segments t where t.segment name tt tsfr fuzzy abnormal 2.強制走全表掃瞄和索引 full tt conve...