表如下:
CREATE TABLE CONTRACT_TMP
(CONTRACT_NUMBER VARCHAR2(700));现在往这表里INSERT数据,有2W笔个合同号,我用INSERT INTO CONTRACT_TMP(CONTRACT_NUMBER) VALUES('***');
一共有2000行这样的语句,最后一个COMMIT;执行起来非常慢,希望各位大虾指点下!

解决方案 »

  1.   

    你指的是COMMIT慢还是所有一起运行的时候很慢啊?
      

  2.   

    alter table CONTRACT_TMP nologging;
    insert /*+ APPEND */ into CONTRACT_TMP
      

  3.   

    commit操作不应该慢啊,应该就是瞬间就能完成的,建议楼上的
    alter table CONTRACT_TMP nologging;
    实在不行 看下执行计划
      

  4.   

    COMMIT;是放在最后面。
    现在用最新方法,用SELECT * FROM CONTRACT_TMP FOR UPDATE; 然后直接往里面贴,速度快得没法再快了只是不明白为什么INSERT INTO效率这么慢
      

  5.   

    首先确定慢的时候,是为整个DB慢还是单个的insert慢?
    再看CONTRACT_TMP是否有锁,导致不是慢,而是在等待;
    其次看是否为临时表空间、回滚段等不足导致慢。如果是2万条的话,你还可以靠ctrl v来解决,如果是20万、200万的话,ctrl v就不行了。此时你可以使用sql loader等方式来导入。
      

  6.   

    恩,方法多多
    ctrl V  ,sqlldr,
    3楼的采用不记录undo信息的方法也不错。
      

  7.   


    alter table CONTRACT_TMP nologging;看下执行计划…