2022-06-29
merge into的性能问题
100M语句如下:
MERGE INTO table A USING ( SELECT INNER_NO, BILL_FORMAT,
SA_ACCT_NO, SA_OPEN_BRANCH, ACCT_NAME, SA_TX_DT, SA_TX_BRANCH,
SA_OPR_NO, CURR_CODE, CURR_NAME, SA_TX_LOG_NO, SA_TX_CODE, DC_FLAG,
SA_TX_AMT, SA_USAGE, DOC_TYP_CODE, DOC_TYP, DOC_NO, SA_JSFS,
CHANNEL_NO, SA_TX_TYPE, SA_OP_ACCT_NO, SA_OP_CUST_NAME, APPEND_FIELDS,
QRCODE_STRING, IS_PATCH, PRINT_CNTS, NEED_RECORD, RECORD_FINISH,
RECORD_TIME, RECORD_BRANCH, RECORD_OPER, RECORD_FORMAT, FCM_ROWID,
LOG_TIME, AUTHORIZER, RECORD_ATTBRH, RED_FLAG, NEED_HIDE, TX_LOG_NO
FROM table_TMP WHERE TX_LOG_NO IS NOT NULL AND SA_ACCT_NO
IS NOT NULL AND SA_JSFS IS NOT NULL ) B ON (A.SA_TX_DT=B.SA_TX_DT AND
A.TX_LOG_NO=B.TX_LOG_NO ) WHEN MATCHED THEN UPDATE SET
A.INNER_NO=B.INNER_NO,A.BILL_FORMAT=B.BILL_FORMAT,A.SA_ACCT_NO=B.SA_ACCT
_NO, A.SA_OPEN_BRANCH=B.SA_OPEN_BRANCH,A.ACCT_NAME=B.ACCT_NAME,
A.SA_TX_BRANCH=B.SA_TX_BRANCH,A.SA_OPR_NO=B.SA_OPR_NO,
A.CURR_CODE=B.CURR_CODE,A.CURR_NAME=B.CURR_NAME,
A.SA_TX_LOG_NO=B.SA_TX_LOG_NO,A.SA_TX_CODE=B.SA_TX_CODE,
A.DC_FLAG=B.DC_FLAG,A.SA_TX_AMT=B.SA_TX_AMT,A.SA_USAGE=B.SA_USAGE,
A.DOC_TYP_CODE =B.DOC_TYP_CODE ,A.DOC_TYP=B.DOC_TYP,A.DOC_NO=B.DOC_NO,
A.SA_JSFS=B.SA_JSFS,A.CHANNEL_NO=B.CHANNEL_NO,A.SA_TX_TYPE=B.SA_TX_TYPE,
A.SA_OP_ACCT_NO=B.SA_OP_ACCT_NO,A.SA_OP_CUST_NAME=B.SA_OP_CUST_NAME,
A.APPEND_FIELDS=B.APPEND_FIELDS,A.QRCODE_STRING=B.INNER_NO,
A.IS_PATCH=B.IS_PATCH,A.PRINT_CNTS=B.PRINT_CNTS,A.NEED_RECORD=B.NEED_REC
ORD, A.RECORD_FINISH=B.RECORD_FINISH,A.RECORD_ATTBRH=B.RECORD_ATTBRH,
A.RED_FLAG=B.RED_FLAG,A.NEED_HIDE=B.NEED_HIDE WHEN NOT MATCHED THEN
INSERT VALUES ( B.INNER_NO, B.BILL_FORMAT, B.SA_ACCT_NO,
B.SA_OPEN_BRANCH,B.ACCT_NAME, B.SA_TX_DT,
B.SA_TX_BRANCH,B.SA_OPR_NO,B.CURR_CODE,B.CURR_NAME, B.SA_TX_LOG_NO,
B.SA_TX_CODE, B.DC_FLAG,B.SA_TX_AMT,B.SA_USAGE, B.DOC_TYP_CODE,
B.DOC_TYP, B.DOC_NO, B.SA_JSFS, B.CHANNEL_NO, B.SA_TX_TYPE,
B.SA_OP_ACCT_NO, B.SA_OP_CUST_NAME, B.APPEND_FIELDS, B.INNER_NO,
B.IS_PATCH, B.PRINT_CNTS, B.NEED_RECORD, B.RECORD_FINISH,
B.RECORD_TIME, B.RECORD_BRANCH, B.RECORD_OPER, B.RECORD_FORMAT,
B.FCM_ROWID, B.LOG_TIME, B.AUTHORIZER, B.RECORD_ATTBRH, B.RED_FLAG,
B.NEED_HIDE, B.TX_LOG_NO )执行计划如下:
Plan hash value: 1753905604
-------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
-------------------------------------------------------------------------------------------------------------------------------
| 0 | MERGE STATEMENT | | | | 784K(100)| | | |
| 1 | MERGE | table | | | | | | |
| 2 | VIEW | | | | | | | |
| 3 | NESTED LOOPS OUTER | | 258K| 434M| 784K (1)| 02:36:52 | | |
| 4 | TABLE ACCESS FULL | table_TMP | 258K| 218M| 8550 (1)| 00:01:43 | | |
| 5 | TABLE ACCESS BY GLOBAL INDEX ROWID| table | 1 | 875 | 3 (0)| 00:00:01 | ROWID | ROWID |
| 6 | INDEX RANGE SCAN | SYS_C0013050 | 1 | | 3 (0)| 00:00:01 | | |
-------------------------------------------------------------------------------------------------------------------------------
51 rows selected.NESTED LOOPS OUTER部分是否可以优化?
我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏


评论
