这篇文章将为大家详细讲解有关数据库中表连接方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1 nested loop join
循环嵌套连接:行源一的每一条记录,依次去匹配行源2的每条记录,将符合连接条件的记录放在结果集中,直到行源一的所有记录都完成这个操作。循环嵌套连接是最基本也是最古老的表连接方式。
2排序合并连接
排序合并连接:行源一和行源2的数据分别排序,然后将两个排序的源表合并,符合连接条件的记录放到结果集中。由于排序需要内存空间,排序合并连接对内存有比较大的消耗,如果内存空间(8i为sort_area_size,9i及以上使用PGA)不足,则会使用临时表空间,这样会降低排序合并连接的效率。排序合并连接是最古老的表连接方式之一。
附上雄猫哥哥的解释:
你问的
汤姆,
"排序合并"和"散列"连接之间的区别是什么。他们不都做一个吗
全扫描连接表上的每一个并连接它们?
我知道排序合并用于"所有行"的情况,嵌套循环用于
第一行的提示。《加入》怎么样?什么时候用?
如果你能举几个例子解释一下,我将不胜感激。
先谢了。
我们说.
嗯,甲和乙的某种合并有点像这样:
读取A并按临时A的连接键排序
读取B并按临时B的连接键排序
从温度_a读取记录
从温度_b读取记录
当温度_a和温度_b不为电渗流时
环
if (temp_a.key=temp_b.key)然后输出连接记录
elsif (temp_a.key=temp_b.key)从温度_a读取记录
elsif (temp_a.key=temp_b.key)从温度_b)读取记录
结束循环
(比这更复杂的是,上面的逻辑假设连接键是唯一的——我们真的
需要将温度_a中的每一个匹配连接到温度_b中的每一个匹配,但是您得到了图片)
散列连接在概念上类似于:
在创建温度_a的连接键上创建一个散列表
而不是在B上
阅读b中的记录
散列连接键,并通过散列键查找温度_a以进行匹配
记录
输出匹配项
结束循环
因此,散列连接有时会更有效(一个散列,而不是两个排序)
在大多数情况下,排序合并可以在任何时候使用散列连接。如果你没看到
散列连接正在进行,也许您已经关闭了散列连接启用.
3散列连接
哈希连接:将行源一计算成一张基于连接键的混杂表,行源2的每条记录依次扫描这张混杂表,找到匹配的记录放到结果集。计算混杂表需要内存空间,散列连接同样对于内存有比较大的消耗,如果内存空间(8i为hash_area_size,9i及以上使用PGA)不足,则会使用临时表空间,这样会降低哈希连接的效率。
关于"数据库中表连接方式有哪些"这篇文章就分享到这里了,希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/106999.html