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. 解读Spring Ioc容器设计图

    在Spring Ioc容器的设计中,有俩个主要的容器系列:一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器最基本的功能:另外一个是ApplicationContext应用上下 ...

  2. (转)HttpHandler与HttpModule的理解与应用

    神秘的HttpHandler与HttpModule 大学时候我是从拖控件开始学习 asp.net的,对.net的很多类库对象都不是很了解.所以看到大家写一些个性的asp.net名词,就感觉asp.ne ...

  3. ssh连接远程linux服务器

    1.在百度搜索输入"putty"然后进行下载,下载后无需安装只需要在文件中找到"putty.exe"双击即可运行. 2.在"Host Name or ...

  4. struts 模型驱动

    情景: 有一个用来处理用户的UserAction 类, 该动作类实现了 ModelDriven 接口. 当用户触发UserAction 动作时, ModelDriven 拦截器将调用相关UserAct ...

  5. UVA 11300 Spreading the Wealth (数学推导 中位数)

    Spreading the Wealth Problem A Communist regime is trying to redistribute wealth in a village. They ...

  6. foreach的一点理解

    首先什么样的数据才能实现foreach 1 实现IEnumerable这个接口 2 有GetEnumerable()这个方法 然后为啥实现这个接口或者有这个方法就可以实现foreach遍历 首先我先用 ...

  7. python3实现的web端json通信协议

    之前有用python3实现过tcp协议的,后来又实现了http协议的通信,今天公司想做一个功能自动测试系统, 下午弄了一会,发现json格式的实现可以更简单一点,代码如下:简单解说一下,一般与服务器通 ...

  8. C#基础(一)——C#中反斜杠/n与/r的区别

    最近在公司实习的过程中,遇到了字符串换行的问题,百度了一下,发现字符串换行的问题还挺多,总结一下最基本的点,以防忘记. \n—>换行符(New Line),作用为换行符后面的字符串显示到“下一行 ...

  9. c++与C# winform的消息通讯--(结构体与byte数组的使用)

    近期正在做一个蓝牙驱动的使用程序,其中有一块从c++发送数据到C#的部分,网上查了很多资料,大多都是介绍如何通过调用函数获取用户数据.并且在消息发送中,很少介绍如何发送一个结构体,并且结构体里面有 b ...

  10. rgba兼容IE系列

    在容器里面如果用到opacity或者filter:opacity里面的内容也会被滤镜化 如果不想里面的内容也被滤镜化我们可以用rgba来处理或者用透明的背景图片. 兼容ie的rgba的写法 backg ...