- 最后登录
- 2017-5-10
- 在线时间
- 44 小时
- 威望
- 69
- 金钱
- 243
- 注册时间
- 2012-6-26
- 阅读权限
- 50
- 帖子
- 158
- 精华
- 2
- 积分
- 69
- UID
- 530
|
1#
发表于 2012-8-7 16:59:08
|
查看: 3741 |
回复: 2
接受同事的MERGE into 代码 从 每天的300万数据 MERGE INTO 到 B表 该B表每个分区有4千万的数据.
源数据先FETCH BULK 到数组里. 根据 5个关键字段匹配
- MACHTED then UPDATE
- NOT MACHTED THEN
- INSERT INTO B (...) values(...)
复制代码
PLAN:
- DEPTH OPERATION OBJECT_TYPE OPTIONS COST ROW_NUM BYTES ACCESS_PREDICATES FILTER_PREDICATES
- 0 MERGE STATEMENT 3
- 1 MERGE
- 2 VIEW
- 3 NESTED LOOPS OUTER 3 1 159
- 4 FAST DUAL 2 1
- 4 PARTITION RANGE SINGLE 1 1 159
- 5 TABLE ACCESS TABLE BY LOCAL INDEX ROWID 1 1 159 ("AREA_ID"=:B8 AND "CHANNEL_ID"=:B9)
- 6 INDEX INDEX RANGE SCAN 1 2 "USERNUMBER"=:B6 AND "MONTHNO"=:B5 AND "SITECODE"=:B1
-
-
复制代码
等待事件 db file sequential read
总执行次数 568
平均逻辑读 79121
平均物理读 3826
平均处理行数 9984
ROWS_PROCESSED 5671885
平均执行时间(秒) 32.56
平均CPU花费(秒) 1.82
平均I/O花费(秒) 30.58
总的逻辑读 44948687
总的物理读 2173803
总的执行时间(秒) 18499.43
最后一次执行花费时间(秒) 1821
有个本地索引 包含关键子 KEY-MONTH,KEY-USERNAME,KEY-CODE; 没有包含另外两个关键. 应该不太需要;
整个MERGE 需要1小时40分钟.
各位大神不知道 可有更好的解决办法, 简单快速? |
|