另外忘记还有1个信息:就是每次Insert到1个表A后,接下来可能在Select中需要使用表A或者关联表A。

解决方案 »

  1.   

    如果你确定每次都是十几万行的话,则如果每个INSERT/UPDATE语句后都COMMIT一次,这样效率很差的,因为COMMIT的时候,数据库需要做事务相关的操作,也要用时间的;
    而你每次执行完十几万条INSERT/UPDATE后做一次COMMIT,也是不可取的;
    比较习惯用的方法是:
    每做完5000条或者1w条,或者2w条,做一次COMMIT,效率一定比“每个INSERT/UPDATE语句后都COMMIT一次”快。但是具体5000条快,还是1w条快,还是2w条快,不一定了,需要你做测试的。
      

  2.   

    好像用plsql导出数据,文件是SQL文件的时候,每行都会有commit。
    一般用pde格式导出,速度很快。
      

  3.   

    根据业务需求确定一个合适的量,分批commit。还有就是看你的业务是否需要用事务处理,要做好相应的策略
      

  4.   

    不能一条一个commit,降低效率
    也不能一次性提交 ,否则回滚段太大
      

  5.   

    完成需求是第一位的,如,事务一致性
    前面都commit了,后面的操作如果有错误,是否需要把前面的也rollback回来。
      

  6.   

    第二种比较好,一次提交,保持数据一致性。
    并且,commit时,并不是在对硬盘数据库写数据。真正写数据的是DBWn进程。
      

  7.   

    具体的要看具体的业务需求了,如果每个insert、update都commit了,那如果
    有错误的话,如何rollback。
    具体的效率高低:
    一个要看执行的计划。
    另外还要综合考虑磁盘I/O操作过于频繁也会降低效率的,如果每次insert一次或update一次
    这样式写入多次,增加了磁盘的I/O操作的。