当前位置:   article > 正文

使用"merge into",ORACLE批量更新优化,将A表字段的值,变更为B表字段值._oracle merge into update多个字段

oracle merge into update多个字段

1.建测试表语句

  1. CREATE TABLE MERGE_DATA_DEMO1
  2. (
  3. ID1 VARCHAR2(32),
  4. NAME1 VARCHAR2(100)
  5. );
  6. COMMENT ON TABLE MERGE_DATA_DEMO1 IS '测试merge函数demo1表';
  7. CREATE TABLE MERGE_DATA_DEMO2
  8. (
  9. ID2 VARCHAR2(32),
  10. NAME2 VARCHAR2(100)
  11. );
  12. COMMENT ON TABLE MERGE_DATA_DEMO2 IS '测试merge函数demo2表';

2.向表中批量插入10000条测试数据,

  1. begin
  2. for i in 1 .. 10000 loop
  3. INSERT INTO "NEW_TEMP"."MERGE_DATA_DEMO1" ("ID1", "NAME1") VALUES (i, 'name_' || i);
  4. INSERT INTO "NEW_TEMP"."MERGE_DATA_DEMO2" ("ID2", "NAME2") VALUES (i, null);
  5. end loop;
  6. 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分钟还没跑完...我就偷偷缩小数据量了(偷笑)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/806759
推荐阅读
相关标签
  

闽ICP备14008679号