ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 连接的类型

oracle 连接的类型

原创 Linux操作系统 作者:suqiansiyang 时间:2010-08-16 23:39:00 0 删除 编辑

oracle 的连接的类型:

1)排序--合并连接(SMJ)

2)嵌套连接(NL)

3)哈希连接(HJ)

排序内部连接的过程:

(1)首先生成rowsource1 需要的数据,然后对这些数据按照连接操作关联列进行排序

(2) 随后生成rowsource2 需要的数据,然后对这些数据按照与sort source1对应的连接操作关联列进行排序。

(3)最后两天已排序的行被放在一起执行合并操作,即将2个row source按照连接条件连接起来。

下面是连接步骤的图形表示:
              MERGE

        SORT   SORT

Row Source 1  Row Source 2

如果rowsource 已经在连接关联列上被排序,则该连接操作就不需要在进行sort操作,这样可以大大提高这种连接操作的连接速度,因为排序是个极其费资源的操作,特别是对于较大的表。

 

几种连接的比较:

排序--合并连接

a)对于非等值连接,这种连接方式的效率是比较高的

b)如果在关联的列上都有索引,效果更好

c)对于将两个较大的rowsource做连接,该连接方法比NL连接要好一些

d)但是如果sort merge 返回的rowsource过大,则又会导致使用过多的rowid在表中查询数据时,数据库性能下降,因为过多的I/O

嵌套循环

a)如果外部表比较的小,并且在内部表上有唯一的索引,或有高选择性非唯一索引时,使用这种方法可以得到较好的效率。

b)有点:可以先返回已经连接的行,而不必等待所有的连接操作处理才返回数据,

可以实现快速的响应时间。

哈希连接

a)效率应该好于其他2中连接,但是这种连接只能用在CBO优化器中,而且需要设置合适的hash_area_size 参数

b)在2个较大的row source之间连接时会取得相对较好的效率,在一个row source较小时则能取得更好的效率。

c)只能用于等值连接中

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23582874/viewspace-671120/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-08-16

  • 博文量
    11
  • 访问量
    36180