表如下:
CREATE TABLE CONTRACT_TMP
(CONTRACT_NUMBER VARCHAR2(700));现在往这表里INSERT数据,有2W笔个合同号,我用INSERT INTO CONTRACT_TMP(CONTRACT_NUMBER) VALUES('***');
一共有2000行这样的语句,最后一个COMMIT;执行起来非常慢,希望各位大虾指点下!
CREATE TABLE CONTRACT_TMP
(CONTRACT_NUMBER VARCHAR2(700));现在往这表里INSERT数据,有2W笔个合同号,我用INSERT INTO CONTRACT_TMP(CONTRACT_NUMBER) VALUES('***');
一共有2000行这样的语句,最后一个COMMIT;执行起来非常慢,希望各位大虾指点下!
insert /*+ APPEND */ into CONTRACT_TMP
alter table CONTRACT_TMP nologging;
实在不行 看下执行计划
现在用最新方法,用SELECT * FROM CONTRACT_TMP FOR UPDATE; 然后直接往里面贴,速度快得没法再快了只是不明白为什么INSERT INTO效率这么慢
再看CONTRACT_TMP是否有锁,导致不是慢,而是在等待;
其次看是否为临时表空间、回滚段等不足导致慢。如果是2万条的话,你还可以靠ctrl v来解决,如果是20万、200万的话,ctrl v就不行了。此时你可以使用sql loader等方式来导入。
ctrl V ,sqlldr,
3楼的采用不记录undo信息的方法也不错。
alter table CONTRACT_TMP nologging;看下执行计划…