暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Oracle 表链接优化技术
362
5页
0次
2022-07-09
5墨值下载
表之间的连
Join 是一种试将两个表结合起的谓词,一只能连接2表,表连接也可以被称
为表关联。在后面的叙 述中,我们将会使用row source使用 row source
更严谨一些,并且将参与连接的2 row source 别称 row source1 row source 2.Join
过程的各个步骤经常是串行操作,即使相关的 row source 并行访即可行的
join 连接的两 row source 数据但是将表中符限制的数读入内存
row source join 其它步骤般是串行的。多种方法以将2个表连接起来,当
row source(表)之间的连接顺序对于查询的效率有非常大的影响。通过首先存取特定
作为 row
source,使连接的效率较高,这也就是我们常说的要先执行限制条件的原因。一般是在将表
where 子句中对该表的限制条件。
2 row source (如
WHERE A.COL3 = B.COL4
WHERE A.COL3 > B.COL4
WHERE
A.COL3 = B.COL4
+
。上面的各个连接的连接原理都基本一样,所以为了简单期间,下
面以等值连接为例进行介绍
在后面的介绍中,都以以下 Sql 为例进行说明:
SELECT A.COL1 B.COL2
FROM AB
WHERE A.COL3 = B.COL4
A Row Soruce1,则对应的连接操作关联列为 COL 3
B Row Soruce2,则对应的连接操作关联列为 COL 4
连接类型:
目前为止,无论连接操作符如何,典型的连接类型共有3种:
排序 - - 合并连接Sort Merge Join SMJ
嵌套循环(Nested Loops NL) )
哈希连接(Hash Join
另外,还有一
Cartesian product
(笛卡尔积,一般情况下,尽量避免使用。
1. - - 合并连接(Sort Merge Join SMJ
内部连接过程
1
row source1据,后对些数关联
A.col3
进行排序
2
row source2据,后对些数 sort source1对应的连接
操作关联列( B.col4)进行排序。
3
最后两边已排序的行被放在一起执行合并操作,即将2 row source 按照连接条件
连接起来
下面是连接步骤的图形表示
MERGE
/\
SORTSORT
||
Row Source 1Row Source 2
row source 连接联列上被序,则该连接操作就不需要再进 sort
这样可以大大提高这种连接操作的连接速度,因为排序是个极其费资源的操 ,特别是
于较大的表。预先排序的 row source 括已经被索引的列( a.col3 b.col4上有索引)
row source 已经在前面的步骤中被排序了。尽管合并两个 row source 的过程是串行的
是可以并行访问这两个 row source(如并行读入数据,并行排序)
SMJ 连接的例子:
SQL> explain plan for
select/*+ ordered */ e.deptnod.deptno
from emp edept d
where e.deptno = d.deptno
order by e.deptnod.deptno
Query Plan
-------------------------------------
SELECT STATEMENT [CHOOSE] Cost=17
MERGE JOIN
SORT JOIN
TABLE ACCESS FULLEMP [ANALYZED]
SORT JOIN
TABLE ACCESS FULL DEPT [ANALYZED]
排序是一个费时、费资源的操作,特别对于大表。基于这个原因,SMJ 常不是一个特
有效的连接方法,但是如果 2 row source 都已经预先排序,则这种连接方法的效率也
蛮高的。
of 5
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜