赞
踩
1.建测试表语句
- CREATE TABLE MERGE_DATA_DEMO1
- (
- ID1 VARCHAR2(32),
- NAME1 VARCHAR2(100)
- );
- COMMENT ON TABLE MERGE_DATA_DEMO1 IS '测试merge函数demo1表';
- CREATE TABLE MERGE_DATA_DEMO2
- (
- ID2 VARCHAR2(32),
- NAME2 VARCHAR2(100)
- );
- COMMENT ON TABLE MERGE_DATA_DEMO2 IS '测试merge函数demo2表';
2.向表中批量插入10000条测试数据,
- begin
- for i in 1 .. 10000 loop
- INSERT INTO "NEW_TEMP"."MERGE_DATA_DEMO1" ("ID1", "NAME1") VALUES (i, 'name_' || i);
- INSERT INTO "NEW_TEMP"."MERGE_DATA_DEMO2" ("ID2", "NAME2") VALUES (i, null);
- end loop;
- end;
查询验证数据是否插入:
3.使用普通sql批量变更"MERGE_DATA_DEMO2"中的name值,
:如果"demo1"中"id1"值和"demo2"和"id2"相同,则变更"demo2"中的"name2"值为"demo1"中的"name1".
update MERGE_DATA_DEMO2 demo2 set demo2.NAME2 = (select demo1.NAME1 from MERGE_DATA_DEMO1 demo1 where demo2.ID2 = demo1.ID1);
执行结果:批量更新成功,使用时间了1分钟743毫秒
4.将"DEMO2"中的"name2"置空,
update MERGE_DATA_DEMO2 set NAME2 = null ;
5.使用"merge into"函数批量更新.
:如果"demo1"中"id1"值和"demo2"和"id2"相同,则变更"demo2"中的"name2"值为"demo1"中的"name1".
执行结果:批量更新成功,使用时间104毫秒
结果显而易见,批量更新操作中使用"merge into"函数 效率要远远大于普通update语句.数据量越大,使用时间也越明显!
ps:原本我想用1000000条数据测试来着,结果普通update跑了10分钟还没跑完...我就偷偷缩小数据量了(偷笑)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。