表连接概念(转)

表连接概念

Hash join
它的连接方式﹐Oracle将第一个表加加载内存﹐使用一种Hash 朮﹐连接第二个表. 显然驱动表应该选择两者中的较小者。 因为CBO总是倾向于把HASH连接放在次要地位﹐我们可以用
USE_HASH
提示﹐强制优化器使用HASH连接方式。由于HASH 法的使用﹐索引的存在对性能的影响不是很大。

Nested loop
即嵌套循环连接﹐是一种是最基本的表连接方式﹐在嵌套循环 中﹐首先从驱动表读取记录﹐然后把结果集与第二个表进行比较 连接﹐如图所示,这一切都是通过索引来进行的﹐如果没有索引﹐ 连接成本会大大地增加。 在考虑连接顺序时﹐应该把最小的表作为驱动表。 在内部表上建有可用的索引的时候﹐应该首先考虑使用Nested Loop

[@more@]


Sort merge join 它不使用索引﹐它用全表扫描获得两个数据集合﹐然后将它们 分别排序后﹐合并成为一个最终的结果集。 注意到排序合并连接中并没有使用索引是非常重要的。在大多数 情况下﹐通过索引访问更快一些﹐但是当连接表中需要有大量资料 的处理和返回﹐大量的全表扫描﹐或者表上没有建立索引的话﹐可 以考虑使用Sort merge join

*
表连接优化实例
曾经在一个ERP维护中遇到过这样一个典型问题﹐有一个比较 复杂的SQL﹐其中由多个关联了十几个大表的视图JOIN而成﹐咝?一次花几个小时的时间。后来经过仔细观察执行计划﹐发现优化器 在处理上述的几个大的结果集关联的时候﹐使用的是嵌套循环。众 所周知﹐嵌套循环需要用到索引﹐否则效率会很低﹐而几个数据集 关联时是不可能有索引的﹐咝屑竞

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

转载于:http://blog.itpub.net/12058779/viewspace-1018018/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值