Welcome 微信登录

首页 / 数据库 / MySQL / Oracle Join Methods

Hash Join过程通过一个例子来说明SQL_ID  gtmmr9gaxqhfr, child number 0
-------------------------------------
SELECT /*+ USE_HASH(d e) */e.ename, d.dname FROM emp e, dept d where
e.deptno=d.deptnoPlan hash value: 1123238657-------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time |  OMem |  1Mem | Used-Mem |
-------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT |      |        |     | 106 (100)|          |     |     |          |
|*  1 |  HASH JOIN       |      |   15 | 360 | 106 (1)| 00:00:02 |  1206K|  1206K|  661K (0)|
| 2 | TABLE ACCESS FULL| EMP  |   15 | 135 |   3 (0)| 00:00:01 |     |     |          |
| 3 | TABLE ACCESS FULL| DEPT |    100K|  1465K| 103 (1)| 00:00:02 |     |     |          |
-------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
--------------------------------------------------- 1 - access("E"."DEPTNO"="D"."DEPTNO")1. Oracle将emp以deptno为hash key在PGA中建立一个hash table,这个hash table是分区的,假如PGA的hash area不够大,将会以分区为单位写入temp表空间。Oracle总是使用较小的结果集建立hash table。在执行计划中,紧跟着Hash join的就是probed hash table。 2. Oracle扫描dept,同样以deptno位hash key去probe内存/temp中的hash table。3. 返回结果。由于Hash join使用PGA,是私有内存,不需要latch保护。这一点与buffer cache中内容读写不一样。 Zero pass, One pass and Multiple passhash area size能够存储整个probed hash table时,不需要使用temp,性能最优,为zero pass。在执行机会中称之为0mem当hash area size能够放下至少一个分区时,执行计划中为1mem.hash area size连一个完整分区都不能存储时,为最差情况,这种情况称为multiple pass. Nested Loop JoinNested loop工作原理类似双重循环。通常用于两个小的结果集。特点:outer table比较小,inner table可以用连接键快速定位,比如使用索引。也就是说,inner table的连接键上有索引。在执行计划里,NESTED LOOPS
outer_loop
inner_loop
Oracle 11g引入了新的实现方式,在执行计划里有体现。具体请看Performance Tuning Guide Page 300。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12<!-- Baidu Button BEGIN -->根据ora_rowscn删除重复插入的数据MySQL 5.1.73升级为MySQL 5.5.35详解相关资讯      Oracle Join  本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图