3種主要表連線方式對比

531968912發表於2016-03-31

1、巢狀迴圈連結(USE_NL)

主要消耗的相關資源:CPU,磁碟I/O

特點:在網上看到很多關於這方面的帖子,說小表作為驅動表,其實這種說話不完全正確,其實帶條件的大表返回較少行的結果集也可以作為驅動表(外部表)。此表連線在當有高選擇性索引或進行限制性搜尋時候效率較高,可以快速返回第一次的搜尋結果。

缺點:當索引丟失或查詢條件限制不夠時,效率很低。

 

2、排序合併連線(USE_MERGE)

主要消耗的相關資源:記憶體,臨時表空間

特點:在排序合併連線中,ORACLE分別將第一個源表、第二個源表按他們各自要連線的列排序,然後將兩個已經排序的源表合併。由於沒有索引,排序合併連線在合併兩表錢將強制對他們進行排序,兩表都需要進行全表掃描,所以表名在FROM自居中出現的次序並不重要。當缺乏索引或搜尋條件模糊時,該型別的連線比巢狀迴圈連線更加有效。

缺點:所有表都需要排序,它為最最佳化的吞吐量而設計,並且在結果沒有全部找到之前不返回資料。

 

3、雜湊連線(USE_HASH)

主要消耗的相關資源:記憶體,臨時表空間

特點:在雜湊連線中,ORACLE訪問第一張表(通常是連線結果中較小的表),並且在記憶體中建立一張基於連線鍵的雜湊表,然後他掃描另外一張表(較大的表),並根據雜湊表檢測是否有匹配的記錄。當缺乏索引或搜尋條件模糊時,該型別的連線比巢狀迴圈連線更加有效。通常比排序合併連線更快。

缺點:為建立雜湊表,需要大量的記憶體,第一次結果返回慢,如果在磁碟上操作,速度將更慢。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2073245/,如需轉載,請註明出處,否則將追究法律責任。

相關文章