一般都用這兩種方法﹐你是什么寫的呢﹖
insert into tb(col1,col2,col3...) select col1,col2,col3... from ta where.........insert into tb(col1,col2,col3)
select a,b,c
union all select d,e,f
union all select j,k,l
......................要個體指明列名
insert into tb(col1,col2,col3...) select col1,col2,col3... from ta where.........insert into tb(col1,col2,col3)
select a,b,c
union all select d,e,f
union all select j,k,l
......................要個體指明列名
应该没有什么在要优化的了,我想是不是你的select 语句太复杂,你应该从这里着手
我是用insert into tableA (cola,colb,......) values(valuea,valueb,.......) 的方式,
插入几条后还要select一下,做些其他判断操作。
在SQL trace中跟踪了一下,发现这个操作执行了7000多条语句,其中select语句比insert要多。我想是不是要整合一下这些语句。用户是在一个维护终端通过远端网络操作的。
用insert into tableA (cola,colb,......) values(valuea,valueb,.......)
可以将所有的这样的插入语句放入一个批处里文件当中.在网络上一次性的将所有语句全部传输过去,然后执行插入操作.
2:最好将这一操作用存储过程进行,可以大大的提高系统性能.
3:在插入之前可以先将操作表的索引脚本拷贝出来,然后将此索引删除,在数据全部插入之后,在用拷贝出来的索引脚本在查询分析器中执行,重建索引.再用UPDATE STATISTICS对索引进行更新.
insert into tb(col1,col2,col3...) select col1,col2,col3... from ta where.........我想你肯定是用这种,你用二楼的第二种的话,一般不会有很多记录,那速度也不会慢到那里去!用这个可能后面的表太多! 这可能就是瓶颈!
1、表索引用问题,插入时需要更新太多的索引,或者是导致太多的索引分裂操作
2、后面的Select语句有问题,操作了7000多条数据,有可能是使用了表扫描,即没有正确的建立索引。
3、如果是大批量使用数据,建议使用BCP命令,这样可以在一分钟内插入大量数据,当然前提是服务器上关于Blug insert选项要开放。
\