a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 152|回复: 2

[综合] 浅谈Oracle中的三种Join方法

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
基本概念     Nested loop join:( s  l# g" D" X2 k8 h2 J
    Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环。7 B  B2 U( _! y/ o7 d
    Sort merge join:0 H  y5 E  ^9 V7 O9 Y
    将两个表排序,然后再进行join。
3 W- o! O9 W/ Z7 o1 b/ A    Hash join:) O  C! j# y' t$ q! u
    将两个表中较小的一个在内存中构造一个Hash 表(对Join Key),扫描另一个表,同样对Join Key进行Hash后探测是否可以join,找出与之匹配的行。
  E. S. Z2 ?9 J    一张小表被hash在内存中。因为数据量小,所以这张小表的大多数数据已经驻入在内存中,剩下的少量数据被放置在临时表空间中;
7 p( m# ^! b0 m1 a8 a( D% \    每读取大表的一条记录,就和小表中内存中的数据进行比较,如果符合,则立即输出数据(也就是说没有读取临时表空间中的小表的数据)。而如果大表的数据与小表中临时表空间的数据相符合,则不直接输出,而是也被存储临时表空间中。: I3 M$ T" s- x  T# `4 D/ @0 r
    当大表的所有数据都读取完毕,将临时表空间中的数据以其输出。如果小表的数据量足够小(小于hash area size),那所有数据就都在内存中了,可以避免对临时表空间的读写。
1 e# U( o- ]6 H2 c# C    如果是并行环境下,前面中的第2步就变成如下了:每读取一条大表的记录,和内存中小表的数据比较,如果符合先做join,而不直接输出,直到整张大表数据读取完毕。如果内存足够,Join好的数据就保存在内存中。否则,就保存在临时表空间中。
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:50 | 显示全部楼层

浅谈Oracle中的三种Join方法

适用范围     Nested loop join:. p$ F1 v4 h+ C7 i
' p: f% t5 ]7 o% k$ y- g# B$ S
    适用于outer table(有的地方叫Master table)的记录集比较少(
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:51 | 显示全部楼层

浅谈Oracle中的三种Join方法

可以用USE_HASH(table_name1 table_name2)提示来强制使用散列连接。如果使用散列连HASH_AREA_SIZE 初始化参数必须足够的大,如果是9i,Oracle建议使用SQL工作区自动管理,设置WORKAREA_SIZE_POLICY 为AUTO,然后调整PGA_AGGREGATE_TARGET 即可。     也可以使用HASH_JOIN_ENABLED=FALSE(默认为TRUE)强制不使用hash join。* R! N9 y) X- a( Y5 `- _, {
    cost = (outer access cost * # of hash partitions) + inner access cost6 D  I) h1 h- t. K' P
    效率比较外语学习网
/ x- J& N6 b+ H8 W1 L6 w    Hash join的主要资源消耗在于CPU(在内存中创建临时的hash表,并进行hash计算),而merge join的资源消耗主要在于磁盘I/O(扫描表或索引)。在并行系统中,hash join对CPU的消耗更加明显。所以在CPU紧张时,最好限制使用hash join。
( _. e% H; [+ n    在绝大多数情况下,hash join效率比其他join方式效率更高:: }! u" u/ ]- e# z  A
    在Sort-Merge Join(SMJ),两张表的数据都需要先做排序,然后做merge。因此效率相对最差;
1 i6 E1 ~7 }6 j    Nested-Loop Join(NL)效率比SMJ更高。特别是当驱动表的数据量很大(集的势高)时。这样可以并行扫描内表。
- S0 o. e  S; [! W/ e9 R6 `    Hash join效率最高,因为只要对两张表扫描一次。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-4-30 07:19 , Processed in 0.230990 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表