Z_ZZZZZZZZ_BENE 大约有400万数据
修改前
 
SELECT xxxx
FROM (
SELECT DISTINCT FIELD1_CONTENT
FROM xxxxxxxx_LOG@DBLINK
WHERE UPPER(TABLENAME) = 'Y_YYYYYYYYY_PRODUCT'
AND DATECODE >= TO_DATE('2019-06-18 00:25:40','YYYY-MM-DD HH24:MI:SS')
AND DATECODE <= TO_DATE('2019-06-19 01:06:49','YYYY-MM-DD HH24:MI:SS')
AND BUSINESSTYPE = 'NEW'
) C,
Y_YYYYYYYY_PRODUCT@DBLINK A,
Z_ZZZZZZZZ_BENE@DBLINK B
WHERE A.ITEM_ID = C.FIELD1_CONTENT
AND A.XXXXXX_ID = B.XXXXXX_ID
AND A.XXXXXXX_1 = B.YYYYYYYY
AND B.XXXXXX_ID IS NOT NULL
AND B.REAL_NAME<>'法定受益人'
AND B.REAL_NAME<>'法定继承人'
AND B.REAL_NAME<>'详见特别约定'
AND B.REAL_NAME<>'祥见特别约定'
AND B.REAL_NAME<>'法定'
AND ( ( B.REAL_NAME IS NOT NULL
AND B.CERTI_TYPE IS NOT NULL
AND B.CERTI_CODE IS NOT NULL
)
OR
( B.REAL_NAME IS NOT NULL
AND B.TELEPHONE IS NOT NULL
)
);

  

修改前的执行计划,执行这个脚本大约4个小时没跑完。

SQL_ID  acbfjjjak0vub, child number 0
-------------------------------------
INSERT INTO xxxxxxxxxx SELECT xxxxx FROM ( SELECT DISTINCT FIELD1_CONTENT
FROM xxxxxxxx_LOG@DBLINK WHERE UPPER(TABLENAME) =
'Y_YYYYYYYY_PRODUCT' AND DATECODE >= TO_DATE('2019-06-18
00:25:40','YYYY-MM-DD HH24:MI:SS') AND DATECODE <=
TO_DATE('2019-06-19 01:06:49','YYYY-MM-DD HH24:MI:SS') AND
BUSINESSTYPE = 'NEW' ) C, Y_YYYYYYYY_PRODUCT@DBLINK A,
Z_ZZZZZZZZ_BENE@DBLINK B WHERE A.ITEM_ID =
C.FIELD1_CONTENT AND A.XXXXXX_ID = B.XXXXXX_ID A Plan hash value: 2832774925 ---------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |IN-OUT|
---------------------------------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | | | 108K(100)| | | |
| 1 | LOAD TABLE CONVENTIONAL | | | | | | | |
| 2 | NESTED LOOPS | | 1 | 377 | 108K (1)| 00:21:39 | | |
| 3 | MERGE JOIN CARTESIAN | | 606 | 194K| 107K (1)| 00:21:25 | | |
| 4 | REMOTE | Z_ZZZZZZZZ_BENE | 1 | 177 | 10849 (1)| 00:02:11 | DBLINK | R->S |
| 5 | BUFFER SORT | | 7277 | 1080K| 96163 (1)| 00:19:14 | | |
| 6 | VIEW | | 7277 | 1080K| 96163 (1)| 00:19:14 | | |
| 7 | SORT UNIQUE | | 7277 | 412K| 96163 (1)| 00:19:14 | | |
| 8 | REMOTE | xxxxxxxx_LOG | 7278 | 412K| 96162 (1)| 00:19:14 | DBLINK | R->S |
| 9 | REMOTE | Y_YYYYYYYY_PRODUCT | 1 | 48 | 2 (0)| 00:00:01 | DBLINK | R->S |
--------------------------------------------------------------------------------------------------------------- Remote SQL Information (identified by operation id):
---------------------------------------------------- 4 - SELECT /*+ OPAQUE_TRANSFORM */ "BENE_ID","XXXXXX_ID","YYYYYYYY","BENE_TYPE","BENE_ORDER","REAL_N
AME","CERTI_TYPE","CERTI_CODE","TELEPHONE","BENE_RATE" FROM "Z_ZZZZZZZZ_BENE" "B" WHERE ("TELEPHONE"
IS NOT NULL OR "CERTI_TYPE" IS NOT NULL AND "CERTI_CODE" IS NOT NULL) AND "REAL_NAME"<>'法定受益人' AND
"REAL_NAME"<>'法定继承人' AND "REAL_NAME"<>'详见特别约定' AND "REAL_NAME"<>'祥见特别约定' AND "REAL_NAME"<>'法定'
(accessing 'DBLINK' ) 8 - SELECT /*+ OPAQUE_TRANSFORM */ "DATECODE","TABLENAME","FIELD1_CONTENT","BUSINESSTYPE" FROM
"xxxxxxxx_LOG" "xxxxxxxx_LOG" WHERE "DATECODE">=TO_DATE(' 2019-06-18 00:25:40', 'syyyy-mm-dd
hh24:mi:ss') AND "BUSINESSTYPE"='NEW' AND UPPER("TABLENAME")='Y_YYYYYYYY_PRODUCT' AND
"DATECODE"<=TO_DATE(' 2019-06-19 01:06:49', 'syyyy-mm-dd hh24:mi:ss') (accessing 'DBLINK' ) 9 - SELECT /*+ OPAQUE_TRANSFORM */ "ITEM_ID","XXXXXX_ID","XXXXXXX_1","UPDATE_TIME" FROM
"Y_YYYYYYYY_PRODUCT" "A" WHERE "ITEM_ID"=:1 AND "XXXXXX_ID"=:2 AND "XXXXXXX_1"=:3 (accessing 'DBLINK' )

  

修改后的SQL
--省略处跟原SQL相同,只不过新增了/*+ cardinality(b 2000000) */

SELECT /*+ cardinality(b 2000000) */ xxxx
FROM (
SELECT DISTINCT FIELD1_CONTENT
FROM xxxxxxxx_LOG@DBLINK
....
;

  

修改之后的执行计划

 Plan Hash Value  : 1238862255 

-----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost | Time |
-----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 7277 | 2081222 | 121654 | 00:24:20 |
| * 1 | HASH JOIN | | 7277 | 2081222 | 121654 | 00:24:20 |
| 2 | NESTED LOOPS | | 7277 | 1455400 | 110742 | 00:22:09 |
| 3 | VIEW | | 7277 | 1106104 | 96163 | 00:19:14 |
| 4 | HASH UNIQUE | | 7277 | 422066 | 96163 | 00:19:14 |
| 5 | REMOTE | xxxxxxxx_LOG | 7278 | 422124 | 96162 | 00:19:14 |
| 6 | REMOTE | Y_YYYYYYYY_PRODUCT | 1 | 48 | 2 | 00:00:01 |
| 7 | REMOTE | Z_ZZZZZZZZ_BENE | 2000000 | 172000000 | 10928 | 00:02:12 |
----------------------------------------------------------------------------------------- Predicate Information (identified by operation id):
------------------------------------------
* 1 - access("A"."XXXXXX_ID"="B"."XXXXXX_ID" AND "A"."XXXXXXX_1"="B"."YYYYYYYY")

  

Z_ZZZZZZZZ_BENE 大约有400万数据
修改前
SELECT xxxx
FROM (
SELECT DISTINCT FIELD1_CONTENT
FROM xxxxxxxx_LOG@DBLINK
WHERE UPPER(TABLENAME) = 'Y_YYYYYYYYY_PRODUCT'
AND DATECODE >= TO_DATE('2019-06-18 00:25:40','YYYY-MM-DD HH24:MI:SS')
AND DATECODE <= TO_DATE('2019-06-19 01:06:49','YYYY-MM-DD HH24:MI:SS')
AND BUSINESSTYPE = 'NEW'
) C,
Y_YYYYYYYY_PRODUCT@DBLINK A,
Z_ZZZZZZZZ_BENE@DBLINK B
WHERE A.ITEM_ID = C.FIELD1_CONTENT
AND A.XXXXXX_ID = B.XXXXXX_ID
AND A.XXXXXXX_1 = B.YYYYYYYY
AND B.XXXXXX_ID IS NOT NULL
AND B.REAL_NAME<>'法定受益人'
AND B.REAL_NAME<>'法定继承人'
AND B.REAL_NAME<>'详见特别约定'
AND B.REAL_NAME<>'祥见特别约定'
AND B.REAL_NAME<>'法定'
AND ( ( B.REAL_NAME IS NOT NULL
AND B.CERTI_TYPE IS NOT NULL
AND B.CERTI_CODE IS NOT NULL
)
OR
( B.REAL_NAME IS NOT NULL
AND B.TELEPHONE IS NOT NULL
)
);
  
SQL_ID acbfjjjak0vub, child number
-------------------------------------
INSERT INTO xxxxxxxxxx SELECT xxxxx FROM ( SELECT DISTINCT FIELD1_CONTENT
FROM xxxxxxxx_LOG@DBLINK WHERE UPPER(TABLENAME) =
'Y_YYYYYYYY_PRODUCT' AND DATECODE >= TO_DATE('2019-06-18
00:25:40','YYYY-MM-DD HH24:MI:SS') AND DATECODE <=
TO_DATE('2019-06-19 01:06:49','YYYY-MM-DD HH24:MI:SS') AND
BUSINESSTYPE = 'NEW' ) C, Y_YYYYYYYY_PRODUCT@DBLINK A,
Z_ZZZZZZZZ_BENE@DBLINK B WHERE A.ITEM_ID =
C.FIELD1_CONTENT AND A.XXXXXX_ID = B.XXXXXX_ID A
 
Plan hash value:
 
---------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Inst |IN-OUT|
---------------------------------------------------------------------------------------------------------------
| | INSERT STATEMENT | | | | 108K()| | | |
| | LOAD TABLE CONVENTIONAL | | | | | | | |
| | NESTED LOOPS | | | | 108K ()| :: | | |
| | MERGE JOIN CARTESIAN | | | 194K| 107K ()| :: | | |
| | REMOTE | Z_ZZZZZZZZ_BENE | | | ()| :: | DBLINK | R->S |
| | BUFFER SORT | | | 1080K| ()| :: | | |
| | VIEW | | | 1080K| ()| :: | | |
| | SORT UNIQUE | | | 412K| ()| :: | | |
| | REMOTE | xxxxxxxx_LOG | | 412K| ()| :: | DBLINK | R->S |
| | REMOTE | Y_YYYYYYYY_PRODUCT | | | ()| :: | DBLINK | R->S |
---------------------------------------------------------------------------------------------------------------
 
Remote SQL Information (identified by operation id):
----------------------------------------------------
 
- SELECT /*+ OPAQUE_TRANSFORM */ "BENE_ID","XXXXXX_ID","YYYYYYYY","BENE_TYPE","BENE_ORDER","REAL_N
AME","CERTI_TYPE","CERTI_CODE","TELEPHONE","BENE_RATE" FROM "Z_ZZZZZZZZ_BENE" "B" WHERE ("TELEPHONE"
IS NOT NULL OR "CERTI_TYPE" IS NOT NULL AND "CERTI_CODE" IS NOT NULL) AND "REAL_NAME"<>'法定受益人' AND
"REAL_NAME"<>'法定继承人' AND "REAL_NAME"<>'详见特别约定' AND "REAL_NAME"<>'祥见特别约定' AND "REAL_NAME"<>'法定'
(accessing 'DBLINK' )
 
- SELECT /*+ OPAQUE_TRANSFORM */ "DATECODE","TABLENAME","FIELD1_CONTENT","BUSINESSTYPE" FROM
"xxxxxxxx_LOG" "xxxxxxxx_LOG" WHERE "DATECODE">=TO_DATE(' 2019-06-18 00:25:40', 'syyyy-mm-dd
hh24:mi:ss') AND "BUSINESSTYPE"='NEW' AND UPPER("TABLENAME")='Y_YYYYYYYY_PRODUCT' AND
"DATECODE"<=TO_DATE(' 2019-06-19 01:06:49', 'syyyy-mm-dd hh24:mi:ss') (accessing 'DBLINK' )
 
- SELECT /*+ OPAQUE_TRANSFORM */ "ITEM_ID","XXXXXX_ID","XXXXXXX_1","UPDATE_TIME" FROM
"Y_YYYYYYYY_PRODUCT" "A" WHERE "ITEM_ID"=: AND "XXXXXX_ID"=: AND "XXXXXXX_1"=: (accessing 'DBLINK' )
 
 
  
修改后
SELECT /*+ cardinality(b 2000000) */ xxxx
FROM (
SELECT DISTINCT FIELD1_CONTENT
FROM xxxxxxxx_LOG@DBLINK
WHERE UPPER(TABLENAME) = 'Y_YYYYYYYYY_PRODUCT'
AND DATECODE >= TO_DATE('2019-06-18 00:25:40','YYYY-MM-DD HH24:MI:SS')
AND DATECODE <= TO_DATE('2019-06-19 01:06:49','YYYY-MM-DD HH24:MI:SS')
AND BUSINESSTYPE = 'NEW'
) C,
Y_YYYYYYYY_PRODUCT@DBLINK A,
Z_ZZZZZZZZ_BENE@DBLINK B
WHERE A.ITEM_ID = C.FIELD1_CONTENT
AND A.XXXXXX_ID = B.XXXXXX_ID
AND A.XXXXXXX_1 = B.YYYYYYYY
AND B.XXXXXX_ID IS NOT NULL
AND B.REAL_NAME<>'法定受益人'
AND B.REAL_NAME<>'法定继承人'
AND B.REAL_NAME<>'详见特别约定'
AND B.REAL_NAME<>'祥见特别约定'
AND B.REAL_NAME<>'法定'
AND ( ( B.REAL_NAME IS NOT NULL
AND B.CERTI_TYPE IS NOT NULL
AND B.CERTI_CODE IS NOT NULL
)
OR
( B.REAL_NAME IS NOT NULL
AND B.TELEPHONE IS NOT NULL
)
);
  
修改之后的执行计划
Plan Hash Value :
-----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost | Time |
-----------------------------------------------------------------------------------------
| | SELECT STATEMENT | | | | | :: |
| * | HASH JOIN | | | | | :: |
| | NESTED LOOPS | | | | | :: |
| | VIEW | | | | | :: |
| | HASH UNIQUE | | | | | :: |
| | REMOTE | xxxxxxxx_LOG | | | | :: |
| | REMOTE | Y_YYYYYYYY_PRODUCT | | | | :: |
| | REMOTE | Z_ZZZZZZZZ_BENE | | | | :: |
-----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
------------------------------------------
* - access("A"."XXXXXX_ID"="B"."XXXXXX_ID" AND "A"."XXXXXXX_1"="B"."YYYYYYYY")

最新文章

  1. oracle 的分析函数
  2. php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法
  3. mysql修改为utf8格式
  4. 从C#到Objective-C,循序渐进学习苹果开发(1)--准备开发账号和开发环境
  5. 在windows中,如何使用cmd命令行窗口正确显示编码为utf-8格式的文字
  6. matlab如何读取未知行数,带头文件和字段名的txt文件
  7. HDU 5510 Bazinga (2015沈阳现场赛,子串判断)
  8. initMethod 和 afterPropertiesSet 以及 AwareMethod方法的执行时机
  9. NGUI-学习笔记(2)一个项目需求
  10. Socket 理解
  11. hdu 2842 Chinese Rings
  12. 在 Swift 语言中更好的处理 JSON 数据:SwiftyJSON
  13. cmd获取python返回值
  14. java 之 原型模式(大话设计模式)
  15. Gitee(码云)、Github同时配置ssh key
  16. Centos 7下下载和安装docker
  17. ActiveMQ_1学习
  18. PAT 乙级 1018 锤子剪刀布 (20) C++版
  19. MySQL服务器发生OOM的案例分析
  20. wwindows文件放入linux后多出换行符

热门文章

  1. Synchronized 与 ReentrantLock 的区别!
  2. 微服务-熔断器 Hystrix 的原理与使用
  3. Python之os.path.join()
  4. 2018年分享的Spring Cloud 2.x系列文章
  5. ASP.NET MVC 学习笔记之View 和Redriect的区别
  6. tac - 反转显示文件
  7. 运行连接Oracle数据库时,Idea报错: Error : java 不支持发行版本5
  8. mongoose 常用数据库操作 插入
  9. nodejs模块——fs模块 使用fs.read读文件
  10. asp.net core Mvc 增删改查