有驅動順序,驅動表(結果集)返回多少記錄,被驅動表(結果集)就被訪問多少次,無須排序。
一、NESTED LOOPS
嵌套循環算法
特點
1、高度依賴索引,被驅動表索引只能為:INDEX UNIQUE SCAN、INDEX RANGE SCAN,才能保障性能高
效;
2、小結果集做驅動表,大結果集做被驅動表,才能保障性能高效;
3、DBLINK永遠不能作為NL的被驅動表;
4、兩表使用外連接進行關聯,如果是NESTED LOOPS,那么無法更改驅動表,驅動表將會被固
定在主表;
5、連接條件是instr、LIKE、substr、regexp_like只能走NESTED LOOPS;
6、HINT寫法:t1為驅動表,t2為被驅動表
二、HASH JOIN
HASH連接算法
1、Build 階段:讀取小表(Build Input)生成Hash表;
2、Probe 階段:讀取大表(Probe Input)探查Hash表并進行連接;
3、Build 操作在PGA中進行,不夠時使用臨時表空間;
4、被驅動表(被驅動表不需要讀入PGA中),對被驅動表的連接列也進行hash運算,然后到PGA中去探測Hash
表進行連接;
特點
1、當表數據太大PGA放不下,會使用臨時表空間,從而影響性能;
2、驅動順序:小的結果集先訪問,大的結果集后訪問,才能保證被驅動表的訪問次數降到最低,
才能保障性能;
3、驅動表和被驅動表都只會訪問0次(索引能返回數據,就不需要再回表)或者1次;
4、HASH連接的驅動表與被驅動表的連接列都不需要創建索引;
文檔被以下合輯收錄
評論