Heim >Datenbank >MySQL-Tutorial >Oracle 三种表连接算法总结

Oracle 三种表连接算法总结

WBOY
WBOYOriginal
2016-06-07 17:28:53901Durchsuche

Oracle有三种表连接技术,分别是嵌套连接、合并连接和哈希连接。

Oracle有三种表连接技术,分别是嵌套连接、合并连接和哈希连接。

1. 嵌套循环连接 (NESTED LOOP Join)

嵌套连接把要处理的数据集分为外循环(驱动数据源)和内循环(被驱动数据源),外循环只执行一次(先执行),内循环执行的次数等于外循环执行的数据集个数。

这种连接的好处是内存使用非常少。

如果驱动数据源有限,且被驱动表在连接列上有相应的索引,则这种连接方式才是高效的。

在OLTP系统上常见到这种连接方式。

2. 排序合并连接 (Sort Merge Join)

顾名思义,排序合并就是先分别对待连接的数据集进行排序,然后再合并,其执行过程大致为:对表A的数据集进行排序,排序结果保存的工作区A中;对表B的数据集进行排序,排序结果保存在工作区B中;最后合并工作区A和B中的数据。

对这种连接方法,排序的开销是非常大的,和排序工作区相关的内存参数有:sort_area_size和sort_area_retained_size,,都在在PGA中。

3. 哈希连接 (Hash Join)

哈希连接处理的两个数据集分别称为构造输入(build input)和探测输入(probe input),构造输入的每行记录用于构造哈希表,探测输入的每行记录对哈希表进行探测,以找出符合连接条件的记录。

将较小的表作为构造输入,较大的表作为探测输入,这样哈希连接的效率才比较高,在执行计划中,较小的输入表在前面,较大的探测表在后面。

哈希连接只有在相等连接的条件下才能进行。

和哈希表工作区相关的内存参数有:hash_area_size,也在PGA中。

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn