sql_cmd:='insert into '||billmonthname||' select * from '||day_tablename;  EXECUTE IMMEDIATE sql_cmd;
  COMMIT;把每天的数据导入到月份表中,每天数据量挺大。300万条,如何提高效率?这是过程的一部分

解决方案 »

  1.   

    将sql_cmd:='insert into '||billmonthname||' select * from '||day_tablename;
    改成sql_cmd:='insert /*+APPEND*/ into '||billmonthname||' select * from '||day_tablename;
    可以提高一些速度另外可能的话可以在insert操作前将目标表的约束和索引去掉,等insert完数据在重建
      

  2.   

    导入时把索引触 发器去掉是比较好的,速度也比较快,做一个job每天在业务量少的时候做,在做之前删除索引,禁用触发器,然后导入后再建立!
      

  3.   

    我觉的如果用sql语句来做 事务处理需要太多资源 可不可以改个思路来解决呢?
    如:做个job 先把数据用导出命令导出来  再导入呢? 因为导入导出可以一段段数据提交
      

  4.   

    不要用insert,太慢了,用sqlloader吧,要快好多。
    方法:先吧表中的数据导到一个文本文件,再用sqlldr命令导入
      

  5.   

    对于你的300万条记录没有什么明显效果,同意使用sqlloader