一.构造相关表P1,P2

create table p1(id int,name char(10));

create table p2(id int,name char(10));

二.批量插入数据

begin

for i in 1 .. 100000

loop

insert into p1 values(i,'a'||i);

end loop

;

commit;

end;

begin

for i in 1 .. 100000

loop

insert into p2 values(i,'b'||i);

end loop

;

commit;

end;

三 对比测试

本来的需求:

update p1 set name=(select name from p2 where p1.id=p2.id);

用p2表的name列来更新p1表的name列

SQL> set timing on

SQL> update p1 set name=(select name from p2 where p1.id=p2.id);

100000 rows updated.

Elapsed: 00:09:59.68

直接update花了10分钟,太慢了

利用rowid更新

DECLARE

  CURSOR cur IS

    SELECT

     b.name, a.ROWID ROW_ID

      FROM p1 a, p2 b

     WHERE a.id = b.id

     ORDER BY a.ROWID;

  V_COUNTER NUMBER;

BEGIN

  V_COUNTER := 0;

  FOR row IN cur LOOP

    UPDATE p1

       SET name = row.name

     WHERE ROWID = row.ROW_ID;

    V_COUNTER := V_COUNTER + 1;

    IF (V_COUNTER >= 1000) THEN

      COMMIT;

      V_COUNTER := 0;

    END IF;

  END LOOP;

  COMMIT;

END;

PL/SQL procedure successfully completed.

Elapsed: 00:00:19.56

差距太明显了--------------------------------------------------

最新文章

  1. CSS项目学习总结
  2. MicroERP软件更新记录2.1
  3. 判断远程图片是否存在【适用于windows服务器】
  4. winfrom之动态控件生成以及保存动态空间的数据
  5. 【python】求水仙数
  6. WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于WS-MEX的实现](提供模拟程序)
  7. [JAVA第二课] java命名规则
  8. node实现一个WEBSOCKET服务器
  9. EasyUI easyui-combobox实现数据联动
  10. Selenium-java测试环境搭建
  11. 实验吧 burpsuie拦截修改请求
  12. 好用的 Chrome 插件,提升你的学习工作效率
  13. 【357】sorted 函数高级用法
  14. [Spark Core] Spark 在 IDEA 下编程
  15. AngularJS入门基础——表达式
  16. 温故而知新 监听 XMLHttpRequest 发起请求
  17. SQL 2008登录的域账户与数据库服务器不再同一个域的 处理方法
  18. 337BRoutine Problem
  19. 关于动态门户WEB博雅互动的源代码(HTML+CSS+javascript)
  20. spring基础---->spring自定义标签(一)

热门文章

  1. spring jar包、文档官网下载
  2. RHEL7虚拟机中不重启的情况下加新硬盘及扩展根分区容量
  3. index页面数据展示为设定的命名
  4. web前端:html
  5. <div>相关
  6. word每次打开都要选择文档类型
  7. linq 中的分组查询
  8. 关于jQuery,$(":button") 中的冒号是什么意思?
  9. (转)JS页面间传值
  10. 数据库(学习整理)----2--关于Oracle用户权限的授权和收权