表连接方式

1、Nested loop
1、选取量表中过滤后行数最少的表
2、小表中选取一行
3、使用小表中的列的值到大表中匹配数据
4、大表中从头到尾匹配完毕后继续读小表
小表读一遍,大表读(小表行数遍)

适用于小表和大表的连接,小表是指绝对小表(行数少)
要求大表的关联列一定有索引

2、sort merge
适用于预先排好序的数据的关联(数据是完全从索引中得到的,并且索引的首列是关联列)

sort join:将排好序的结果放到PGA中

merge join:用a表的10去从上往下匹配排好序的b表,当b表的10匹配完了就停下,再用a表的20去匹配b表刚才停下来的位置。

将表排好序放到PGA中,从buffer cache中只读取了一次,很少出现栓所征用的问题。
小表读一遍,大表读一遍。

缺点:
如果表特别大,PGA不够,会将磁盘当内存用
排序是超级消耗CPU的操作,PGA也会满,临时文件也会满

3、HASH JOIN
特别适用于大表和大表的关联,也是Oracle默认的关联算法。
缺点:hash join仅适用于等式连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值