SQL_ID  cqsz37256v36j, child number 1
-------------------------------------
INSERT /*+append*/ INTO TMP_ACCT_AF NOLOGGING ( DATA_DATE , ACCT_NO , ACCT_ORD , ACCT_NO_PK , ACCT_BAL , D_CMP_BAL ,
M_CMP_BAL , Y_CMP_BAL , FLAG , ACCT_FLAG , TERM , TERM_FLAG , CUR_CODE , CUR_NAME , SUB_CODE , CUST_NO , CUST_TYPE ,
CUST_NAME , BANK_CORP_CODE , BRAN_NAME , MGR_CODE , MGR_NAME , OPEN_DATE , FIX_BAL , DIV_FIX_FLAG , ADJUST_AMT ,
ADJUST_AMT_AF , Y_AVG_AF , Y_ADD_AF , ACCT_INTR , SIM_PROFIT , SEPA_POR , PRI , BRAN_CODE , UNIT1_CODE , UNIT2_CODE ,
UNIT3_CODE , DEPT1_CODE , INTR_RATE , DUE_DATE ) SELECT /*+use_merge(t1 t2)parallel(t1 16) use_hash(t1 t3)*/ DATA_DATE,
ACCT_NO, ACCT_ORD, ACCT_NO_PK, ACCT_BAL, D_CMP_BAL, M_CMP_BAL, Y_CMP_BAL, FLAG, ACCT_FLAG, TERM, TERM_FLAG, CUR_CODE,
CUR_NAME, SUB_CODE, CUST_NO, CUST_TYPE, CUST_NAME, BANK_CORP_CODE, BRAN_NAME, NVL(T3.MGR_CODE, T1.MGR_CODE), T1.MGR_NAME,
OPEN_DATE, FIX_BAL, DIV_FIX_FLAG, ADJUST_AMT, ADJUST_AMT_AF, Y_AVG_AF, Y_ADD_AF, ACCT_INTR, SIM_PROFIT, SEPA_POR, PRI,
T1.BRAN_CODE, T2.UNIT1_CODE, T2.UNIT2_CODE, T1.BRAN_CODE Plan hash value: 1366440900 ------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
------------------------------------------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | | | 24 (100)| | | | |
| 1 | LOAD AS SELECT | | | | | | | | |
| 2 | PX COORDINATOR | | | | | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10005 | 1 | 672 | 24 (30)| 00:00:01 | Q1,05 | P->S | QC (RAND) |
| 4 | VIEW | | 1 | 672 | 24 (30)| 00:00:01 | Q1,05 | PCWP | |
| 5 | SORT UNIQUE | | 1 | 650 | 24 (30)| 00:00:01 | Q1,05 | PCWP | |
| 6 | PX RECEIVE | | 1 | 650 | 23 (27)| 00:00:01 | Q1,05 | PCWP | |
| 7 | PX SEND HASH | :TQ10004 | 1 | 650 | 23 (27)| 00:00:01 | Q1,04 | P->P | HASH |
|* 8 | HASH JOIN OUTER | | 1 | 650 | 23 (27)| 00:00:01 | Q1,04 | PCWP | |
| 9 | PX RECEIVE | | 1 | 622 | 18 (28)| 00:00:01 | Q1,04 | PCWP | |
| 10 | PX SEND HASH | :TQ10003 | 1 | 622 | 18 (28)| 00:00:01 | Q1,03 | P->P | HASH |
| 11 | MERGE JOIN OUTER | | 1 | 622 | 18 (28)| 00:00:01 | Q1,03 | PCWP | |
| 12 | SORT JOIN | | 1 | 601 | 3 (34)| 00:00:01 | Q1,03 | PCWP | |
| 13 | PX RECEIVE | | 1 | 601 | 2 (0)| 00:00:01 | Q1,03 | PCWP | |
| 14 | PX SEND HASH | :TQ10002 | 1 | 601 | 2 (0)| 00:00:01 | Q1,02 | P->P | HASH |
| 15 | PX BLOCK ITERATOR | | 1 | 601 | 2 (0)| 00:00:01 | Q1,02 | PCWC | |
|* 16 | TABLE ACCESS FULL| TMP_ACCT_AF2 | 1 | 601 | 2 (0)| 00:00:01 | Q1,02 | PCWP | |
|* 17 | SORT JOIN | | 8158 | 167K| 15 (27)| 00:00:01 | Q1,03 | PCWP | |
| 18 | BUFFER SORT | | | | | | Q1,03 | PCWC | |
| 19 | PX RECEIVE | | 8158 | 167K| 12 (9)| 00:00:01 | Q1,03 | PCWP | |
| 20 | PX SEND HASH | :TQ10000 | 8158 | 167K| 12 (9)| 00:00:01 | | S->P | HASH |
| 21 | TABLE ACCESS FULL| S_PM_MGR_DEPT_RELA | 8158 | 167K| 12 (9)| 00:00:01 | | | |
| 22 | BUFFER SORT | | | | | | Q1,04 | PCWC | |
| 23 | PX RECEIVE | | 3902 | 106K| 5 (20)| 00:00:01 | Q1,04 | PCWP | |
| 24 | PX SEND HASH | :TQ10001 | 3902 | 106K| 5 (20)| 00:00:01 | | S->P | HASH |
|* 25 | INDEX FAST FULL SCAN | MGR_DEPT_RELA_IDX2 | 3902 | 106K| 5 (20)| 00:00:01 | | | |
------------------------------------------------------------------------------------------------------------------------------------ Predicate Information (identified by operation id):
--------------------------------------------------- 8 - access("T1"."MGR_CODE"="T3"."MGR_CODE")
16 - access(:Z>=:Z AND :Z<=:Z)
17 - access("T1"."BRAN_CODE"="T2"."UNIT3_CODE")
filter("T1"."BRAN_CODE"="T2"."UNIT3_CODE")
25 - filter("T3"."DEPT1_CODE"<>'999999999') TMP_ACCT_AF2 T1 (SELECT DISTINCT T2.UNIT3_CODE, T2.UNIT2_CODE, T2.UNIT1_CODE
FROM S_PM_MGR_DEPT_RELA T2) T2 S_PM_MGR_DEPT_RELA T3 T1 和 T2 进行 sort merge join 在 T1和 T3进行 hash join,直接导致temp被耗尽 (SELECT /*+use_merge(t1 t2)parallel(t1 16) use_hash(t1 t3)*/
DATA_DATE,
ACCT_NO,
ACCT_ORD,
ACCT_NO_PK,
ACCT_BAL,
D_CMP_BAL,
M_CMP_BAL,
Y_CMP_BAL,
FLAG,
ACCT_FLAG,
TERM,
TERM_FLAG,
CUR_CODE,
CUR_NAME,
SUB_CODE,
CUST_NO,
CUST_TYPE,
CUST_NAME,
BANK_CORP_CODE,
BRAN_NAME,
NVL(T3.MGR_CODE, T1.MGR_CODE),
T1.MGR_NAME,
OPEN_DATE,
FIX_BAL,
DIV_FIX_FLAG,
ADJUST_AMT,
ADJUST_AMT_AF,
Y_AVG_AF,
Y_ADD_AF,
ACCT_INTR,
SIM_PROFIT,
SEPA_POR,
PRI,
T1.BRAN_CODE,
T2.UNIT1_CODE,
T2.UNIT2_CODE,
T1.BRAN_CODE AS UNIT3_CODE,
NVL(T3.DEPT1_CODE, '999999999'),
T1.INTR_RATE,
T1.DUE_DATE
FROM TMP_ACCT_AF2 T1
LEFT JOIN S_PM_MGR_DEPT_RELA T3
ON T1.MGR_CODE = T3.MGR_CODE
AND T3.DEPT1_CODE <> '999999999'
LEFT JOIN (SELECT DISTINCT T2.UNIT3_CODE, T2.UNIT2_CODE, T2.UNIT1_CODE
FROM S_PM_MGR_DEPT_RELA T2) T2
ON T1.BRAN_CODE = T2.UNIT3_CODE) Plan hash value: 4109009912 -----------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 142M| 28G| | 629 (69)| 00:00:02 | | | |
| 1 | LOAD AS SELECT | TMP_ACCT_AF | | | | | | | | |
| 2 | PX COORDINATOR | | | | | | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10002 | 142M| 28G| | 629 (69)| 00:00:02 | Q1,02 | P->S | QC (RAND) |
| 4 | MERGE JOIN OUTER | | 142M| 28G| | 629 (69)| 00:00:02 | Q1,02 | PCWP | |
| 5 | SORT JOIN | | 1500K| 208M| 450M| 254 (27)| 00:00:01 | Q1,02 | PCWP | |
|* 6 | HASH JOIN RIGHT OUTER | | 1500K| 208M| | 225 (17)| 00:00:01 | Q1,02 | PCWP | |
| 7 | BUFFER SORT | | | | | | | Q1,02 | PCWC | |
| 8 | PX RECEIVE | | 3902 | 62432 | | 5 (20)| 00:00:01 | Q1,02 | PCWP | |
| 9 | PX SEND BROADCAST | :TQ10000 | 3902 | 62432 | | 5 (20)| 00:00:01 | | S->P | BROADCAST |
|* 10 | INDEX FAST FULL SCAN| MGR_DEPT_RELA_IDX2 | 3902 | 62432 | | 5 (20)| 00:00:01 | | | |
| 11 | PX BLOCK ITERATOR | | 1407K| 174M| | 217 (16)| 00:00:01 | Q1,02 | PCWC | |
| 12 | TABLE ACCESS FULL | TMP_ACCT_AF2 | 1407K| 174M| | 217 (16)| 00:00:01 | Q1,02 | PCWP | |
|* 13 | SORT JOIN | | 7315 | 471K| | 17 (36)| 00:00:01 | Q1,02 | PCWP | |
| 14 | BUFFER SORT | | | | | | | Q1,02 | PCWC | |
| 15 | PX RECEIVE | | 7315 | 471K| | 15 (27)| 00:00:01 | Q1,02 | PCWP | |
| 16 | PX SEND BROADCAST | :TQ10001 | 7315 | 471K| | 15 (27)| 00:00:01 | | S->P | BROADCAST |
| 17 | VIEW | | 7315 | 471K| | 15 (27)| 00:00:01 | | | |
| 18 | SORT UNIQUE | | 7315 | 150K| | 15 (27)| 00:00:01 | | | |
| 19 | TABLE ACCESS FULL | S_PM_MGR_DEPT_RELA | 8158 | 167K| | 12 (9)| 00:00:01 | | | |
----------------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id):
--------------------------------------------------- 6 - access("T1"."MGR_CODE"="T3"."MGR_CODE"(+))
10 - filter("T3"."DEPT1_CODE"(+)<>'999999999')
13 - access("T1"."BRAN_CODE"="T2"."UNIT3_CODE"(+))
filter("T1"."BRAN_CODE"="T2"."UNIT3_CODE"(+)) 正确关联顺序为T1 和 T3进行HASH JOIN 在通过T1和T2 进行sort merge join

sort merge join导致temp被爆菊的更多相关文章

  1. Sort merge join、Nested loops、Hash join(三种连接类型)

    目前为止,典型的连接类型有3种: Sort merge join(SMJ排序-合并连接):首先生产driving table需要的数据,然后对这些数据按照连接操作关联列进行排序:然后生产probed ...

  2. Nested Loop,Sort Merge Join,Hash Join

    三种连接工作方式比较: Nested loops 工作方式是从一张表中读取数据,访问另一张表(通常是索引)来做匹配,nested loops适用的场合是当一个关联表比较小的时候,效率会更高. Merg ...

  3. Nested loops、Hash join、Sort merge join(三种连接类型原理、使用要点)

    nested loop 嵌套循环(原理):oracle从较小结果集(驱动表.也可以被称为outer)中读取一行,然后和较大结果集(被侦查表,也可以叫做inner)中的所有数据逐条进行比较(也是等值连接 ...

  4. 排序合并连接(sort merge join)的原理

    排序合并连接(sort merge join)的原理 排序合并连接(sort merge join)的原理     排序合并连接(sort merge join)       访问次数:两张表都只会访 ...

  5. Oracle 表的连接方式(1)-----Nested loop join和 Sort merge join

    关系数据库技术的精髓就是通过关系表进行规范化的数据存储,并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理. 表的三种关联方式: nested loop:从A表抽一条记录,遍历B表查找匹配 ...

  6. Nested Loops,Hash Join 和 Sort Merge Join. 三种不同连接的不同:

    原文:https://blog.csdn.net/tianlesoftware/article/details/5826546 Nested Loops,Hash Join 和 Sort Merge ...

  7. 三大表连接方式详解之Nested loop join和 Sort merge join

    在早期版本,Oracle提供的是nested-loop join,两表连接就相当于二重循环,假定两表分别有m行和n行       如果内循环是全表扫描,时间复杂度就是O(m*n)       如果内循 ...

  8. NESTED LOOPS & HASH JOIN & SORT MERGE JOIN

    表连接方式及使用场合 NESTED LOOP 对于被连接的数据子集较小的情况,nested loop连接是个较好的选择.nested loop就是扫描一个表,每读到一条记录,就根据索引去另一个表里面查 ...

  9. Oracle 三种连接方式 NESTED LOOP HASH JOIN SORT MERGE JOIN

    NESTED LOOP: 对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择.在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大( ...

随机推荐

  1. js判断手机浏览器操作系统和微信浏览器的方法

    做手机端的前端开发,少不了对手机平台的判断.如,对于app下载,就要判断在Android平台下就显示Android下载提示:在iOS平台下就显示iOS下载提示. 今天就为大家介绍一下用js判断手机客户 ...

  2. 巧谈 GCD

    转载自:http://www.jianshu.com/p/665261814e24 谈到iOS多线程,一般都会谈到四种方式:pthread.NSThread.GCD和NSOperation.其中,苹果 ...

  3. 07_MyBatis原始的Dao编写方法

    [UserDao.java ] package com.Higgin.Mybatis.dao; import com.Higgin.Mybatis.po.User; public interface ...

  4. 计数排序之python 实现源码

    old = [2, 5, 3, 0, 2, 3, 0, 3] new = [0, 0, 0, 0, 0, 0] for i in range(len(old)): new[old[i]] = new[ ...

  5. struts2初印象

    第一次写这么正式的文章,如果写的不好的地方,请指出. 今天玩了一下struts2,不过貌似是我被他玩了.简要笔记如下: 一.配置struts2(在eclipse Helios版本下) (1)先创建一个 ...

  6. [翻译]ASP.NET Web API的路由

    原文:Routing in ASP.NET Web API 在我们新建一个Web API项目时,会在App_Start文件夹下的WebApiConfig.cs中定义一个默认路由: config.Rou ...

  7. 关于web开发的一点理解

    对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端   服务端通过解析报文并处理报文最后把处理的结果 ...

  8. SQL优化(2)

    建表时候数据库引擎的选择也可以达到优化的效果 InnoDB: 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB MyISAM: ...

  9. Linux系统的启动流程以及做个小小的Linux

    内核的作用     进程管理:进程间切换     内存管理:内存空间分割为内核空间和用户空间     IO管理:对底层硬件的使用必须由内来实现,不能由用户空间进程来实现     文件系统管理     ...

  10. struts导包

    我用的是struts-2.2.3,开始把全部的jar包都放进去了,可是一直报 信息: Parsing configuration file [struts-plugin.xml]2011-6-11 8 ...