成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

快速了解Oracle哈希連接

數據庫 Oracle
這里介紹要使Oracle哈希連接有效,需要設置HASH_JOIN_ENABLED=TRUE,缺省情況下該參數為TRUE,另外,不要忘了還要設置 hash_area_size參數。

在向大家詳細介紹Oracle哈希連接之前,首先讓大家了解下Oracle讀取row source,然后全面介紹Oracle哈希連接,希望對大家有用。在NESTED LOOPS連接中,Oracle讀取row source1中的每一行,然后在row sourc2中檢查是否有匹配的行,所有被匹配的行都被放到結果集中,然后處理row source1中的下一行。

這個過程一直繼續,直到row source1中的所有行都被處理。這是從連接操作中可以得到第一個匹配行的最快的方法之一,這種類型的連接可以用在需要快速響應的語句中,以響應速度為主要目標。

如果driving row source(外部表)比較小,并且在inner row source(內部表)上有唯一索引,或有高選擇性非唯一索引時,使用這種方法可以得到較好的效率。NESTED LOOPS有其它連接方法沒有的的一個優點是:可以先返回已經連接的行,而不必等待所有的連接操作處理完才返回數據,這可以實現快速的響應時間。

如果不使用并行操作,最好的驅動表是那些應用了where 限制條件后,可以返回較少行數據的的表,所以大表也可能稱為驅動表,關鍵看限制條件。對于并行查詢,我們經常選擇大表作為驅動表,因為大表可以充分利用并行功能。當然,有時對查詢使用并行操作并不一定會比查詢不使用并行操作效率高,因為最后可能每個表只有很少的行符合限制條件,而且還要看你的硬件配置是否可以支持并行(如是否有多個CPU,多個硬盤控制器),所以要具體問題具體對待。

NL連接的例子:

  1. SQL> explain plan for  
  2. select a.dname,b.sql  
  3. from dept a,emp b  
  4. where a.deptno = b.deptno;  
  5. Query Plan  
  6. SELECT STATEMENT [CHOOSE] Cost=5 
  7. NESTED LOOPS  
  8. TABLE ACCESS FULL DEPT [ANALYZED]  
  9. TABLE ACCESS FULL EMP [ANALYZED] 

Oracle哈希連接(Hash Join, HJ)

這種連接是在oracle 7.3以后引入的,從理論上來說比NL與SMJ更高效,而且只用在CBO優化器中。

較小的row source被用來構建hash table與bitmap,第2個row source被用來被hansed,并與第一個row source生成的hash table進行匹配,以便進行進一步的連接。Bitmap被用來作為一種比較快的查找方法,來檢查在hash table中是否有匹配的行。特別的,當hash table比較大而不能全部容納在內存中時,這種查找方法更為有用。這種連接方法也有NL連接中所謂的驅動表的概念,被構建為hash table與bitmap的表為驅動表,當被構建的hash table與bitmap能被容納在內存中時,這種連接方式的效率極高。

HASH連接的例子:

  1. SQL> explain plan for  
  2. select /*+ use_hash(emp) */ empno  
  3. from emp, dept  
  4. where emp.deptno = dept.deptno;  
  5. Query Plan  
  6. SELECT STATEMENT [CHOOSE] Cost=3 
  7. HASH JOIN  
  8. TABLE ACCESS FULL DEPT  
  9. TABLE ACCESS FULL EMP 

要使Oracle哈希連接有效,需要設置HASH_JOIN_ENABLED=TRUE,缺省情況下該參數為TRUE,另外,不要忘了還要設置 hash_area_size參數,以使Oracle哈希連接高效運行,因為Oracle哈希連接會在該參數指定大小的內存中運行,過小的參數會使Oracle哈希連接的性能比其他連接方式還要低。

總結一下,在哪種情況下用哪種連接方法比較好:

排序 - - 合并連接(Sort Merge Join, SMJ):
a) 對于非等值連接,這種連接方式的效率是比較高的。
b) 如果在關聯的列上都有索引,效果更好。
c) 對于將2個較大的row source做連接,該連接方法比NL連接要好一些。
d) 但是如果sort merge返回的row source過大,則又會導致使用過多的rowid在表中查詢數據時,數據庫性能下降,因為過多的I/O。

【編輯推薦】

  1. 快速了解Oracle哈希連接
  2. 詳細談論Oracle表連接
  3. 分析Oracle索引掃描四大類
  4. 高手閑談Oracle索引掃描
  5. 六分鐘學會Oracle全表掃描
責任編輯:佚名 來源: NET130
相關推薦

2009-11-17 09:47:54

Oracle SQL語

2015-08-26 16:17:49

OpenStack OpenStack 架開源云平臺

2021-09-15 07:46:42

哈希一致性哈希算法

2016-12-30 13:43:35

異步編程RxJava

2021-11-22 22:14:46

JavaScript開發模塊

2023-11-06 09:24:14

CSS相對顏色

2022-08-04 18:50:12

Navigator瀏覽器設備

2010-11-19 16:22:14

Oracle事務

2010-01-12 10:23:52

路由最佳路徑

2009-11-12 10:05:09

Visual C++

2010-10-26 11:55:21

Oracle OS備份

2010-10-27 16:22:07

Oracle層次查詢

2010-11-15 11:40:44

Oracle表空間

2009-11-17 09:31:06

Oracle Dual

2010-10-25 09:39:43

Oracle FBI索

2010-10-25 15:04:39

Oracle文本函數

2010-10-29 15:37:51

Oracle物理結構

2010-11-15 13:20:06

Oracle恢復結構

2010-11-15 10:40:58

Oracle啟動參數

2010-10-28 13:20:50

ORACLE reso
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一区二区在线视频 | 国产精品区一区二区三 | 亚洲乱码一区二区三区在线观看 | 国产成人短视频在线观看 | 欧美性成人 | 日韩欧美视频网站 | 久久久精品综合 | 综合成人在线 | 激情视频一区 | 亚洲视频免费观看 | 国产成人99久久亚洲综合精品 | 成人综合视频在线观看 | 久久国产精品精品国产色婷婷 | 中文字幕久久久 | 成人片在线看 | 欧美成人高清 | 久久久久www| 亚洲乱码一区二区三区在线观看 | 国产精品久久久久久久免费观看 | 国产精品久久久久久久久久三级 | 亚洲综合色丁香婷婷六月图片 | 亚洲男女激情 | av大片在线 | 日韩字幕 | 本道综合精品 | 日韩免费av | 99热精品在线 | 久久久免费电影 | 91精品国产乱码久久久久久久久 | 看亚洲a级一级毛片 | 精品成人一区二区 | 成人不卡在线 | www.久久99| 美人の美乳で授乳プレイ | 久久人体| 一本色道精品久久一区二区三区 | 91av视频在线免费观看 | a在线免费观看视频 | 免费视频中文字幕 | 在线观看免费福利 | 久久国产亚洲 |