oracle如何小表作为驱动表,[Oracle]表的连接-Oracle

本文详细介绍了数据库查询中的三种主要连接算法:嵌套连接、哈希连接和合并排序连接。嵌套连接在OLTP系统中占据主导,因其适合处理小数据量并要求驱动表和被驱动表有合适索引。哈希连接依赖于内存构建哈希表,适用于等值连接。而合并排序连接则需要两次排序,通常在OLTP系统中使用较少。优化这些连接算法对于提升数据库性能至关重要。
摘要由CSDN通过智能技术生成

在OLTP系统里,嵌套连接占了70%左右,哈希连接占了20%,合并排序连接占了10%。

嵌套连接

算法:嵌套连接从两个表分选出小表为驱动表,大表为被驱动表,先访问驱动表(只访问1次),然后根据驱动表返回的行数多次访问被驱动表(被驱动表访问的次数等于驱动表返回的行数)。

根据上面的算法,我们可以知道,想要让嵌套连接性能好,必须同时满足以下3个条件:

1)驱动表返回的行数要足够少(减少被驱动表访问的次数);

2)驱动表的限制条件要有索引(提高访问驱动表的性能);

3)被驱动表的连接条件要有索引(提高访问被驱动表的性能)。

前面说过,在OLTP系统中,嵌套连接占了70%,因为OLTP系统返回的数据比较少,很适合嵌套连接的情形;还有一个原因就是,嵌套连接几乎没有限制,所有的操作都可以用嵌套连接,不像哈希连接和合并排序连接有很多的限制。

哈希连接

算法:哈希连接是从两个表中选出一个小表作为驱动表,大表为被驱动表,根据驱动表构建哈希表,然后被驱动表的每一行在哈希表中进行哈希匹配。驱动表和被驱动表各访问一次。

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

想让哈希连接性能好,必须保证驱动表足够小,使得内存PGA可以放下哈希表。

合并排序连接

算法:合并排序连接是先分别对两个表进行排序,然后再根据排序结果进行比较合并。合并排序连接没有驱动表和被驱动表的概念。 合并排序连接的限制条件很多,支持>

这种连接方式最大的性能开销是2次排序,因此在OLTP系统中很少被用到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值