程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> [Oracle]表的連接

[Oracle]表的連接

編輯:Oracle教程

在OLTP系統裡,嵌套連接占了70%左右,哈希連接占了20%,合並排序連接占了10%。

嵌套連接

算法:嵌套連接從兩個表分選出小表為驅動表,大表為被驅動表,先訪問驅動表(只訪問1次),然後根據驅動表返回的行數多次訪問被驅動表(被驅動表訪問的次數等於驅動表返回的行數)。

根據上面的算法,我們可以知道,想要讓嵌套連接性能好,必須同時滿足以下3個條件:

1)驅動表返回的行數要足夠少(減少被驅動表訪問的次數);

2)驅動表的限制條件要有索引(提高訪問驅動表的性能);

3)被驅動表的連接條件要有索引(提高訪問被驅動表的性能)。

前面說過,在OLTP系統中,嵌套連接占了70%,因為OLTP系統返回的數據比較少,很適合嵌套連接的情形;還有一個原因就是,嵌套連接幾乎沒有限制,所有的操作都可以用嵌套連接,不像哈希連接和合並排序連接有很多的限制。

哈希連接

算法:哈希連接是從兩個表中選出一個小表作為驅動表,大表為被驅動表,根據驅動表構建哈希表,然後被驅動表的每一行在哈希表中進行哈希匹配。驅動表和被驅動表各訪問一次。

根據上面的算法我們可以知道,哈希連接只支持等值連接,它的限制最多。

想讓哈希連接性能好,必須保證驅動表足夠小,使得內存PGA可以放下哈希表。

合並排序連接

算法:合並排序連接是先分別對兩個表進行排序,然後再根據排序結果進行比較合並。合並排序連接沒有驅動表和被驅動表的概念。 合並排序連接的限制條件很多,支持><,但不支持like和<>
這種連接方式最大的性能開銷是2次排序,因此在OLTP系統中很少被用到。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved