1张表23个字段2400w行数据,直接insert into tb2 select a,b,c... from tb1 就可以的,但是需耗时3小时,怎么样才能快点?循环插入的话,我拿小的表(70w行)试,5w提交1次,结果花的时间多了1倍,不敢拿大表去跑了。
因为是在别人已经开发好的平台上做二次开发,所以只能通过PL/SQL语句块来实现的,别的都用不上。

解决方案 »

  1.   

    改成这样试试:INSERT 时不写日志
    INSERT /*+ append nologging */ INTO 
      

  2.   

    CREATE PROC INSERT_TABLE AS 
    ----定义游标
     cursor cur_INSERT  is
       SELECT * FROM TABLE1 WHERE  .........;  v_currow cur_INSERT%rowtype;
      
      OPREN cur_INSERT;------打开游标
    begin
     loop
       fetch cur_INSERT into cur_row;
      EXIT WHEN cur_LDBank%NOTFOUND; --如果游标到结尾就退出
      
         insert into table2 nologing      --无日志插入      values
            ( v_currow.col1,v_currow.col2,.....
             ); -- end loop;end; 用存储过程插入,我这么七百多万的数据都是这么做的,挺快的
      

  3.   

    1, SQL调优2, BULK COLLECT INTO