一般都用這兩種方法﹐你是什么寫的呢﹖
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
......................要個體指明列名

解决方案 »

  1.   

    insert into table () select ..
    应该没有什么在要优化的了,我想是不是你的select 语句太复杂,你应该从这里着手
      

  2.   


    我是用insert into tableA (cola,colb,......) values(valuea,valueb,.......) 的方式,
    插入几条后还要select一下,做些其他判断操作。
    在SQL trace中跟踪了一下,发现这个操作执行了7000多条语句,其中select语句比insert要多。我想是不是要整合一下这些语句。用户是在一个维护终端通过远端网络操作的。
      

  3.   

    1:如果用户是在一个维护终端通过远端网络操作的
    用insert into tableA (cola,colb,......) values(valuea,valueb,.......)
    可以将所有的这样的插入语句放入一个批处里文件当中.在网络上一次性的将所有语句全部传输过去,然后执行插入操作.
    2:最好将这一操作用存储过程进行,可以大大的提高系统性能.
    3:在插入之前可以先将操作表的索引脚本拷贝出来,然后将此索引删除,在数据全部插入之后,在用拷贝出来的索引脚本在查询分析器中执行,重建索引.再用UPDATE STATISTICS对索引进行更新.
      

  4.   

    insert 应该还可以吧!
    insert into tb(col1,col2,col3...) select col1,col2,col3... from ta where.........我想你肯定是用这种,你用二楼的第二种的话,一般不会有很多记录,那速度也不会慢到那里去!用这个可能后面的表太多! 这可能就是瓶颈!
      

  5.   

    用你的方法来插入数据,慢有几个方面:
    1、表索引用问题,插入时需要更新太多的索引,或者是导致太多的索引分裂操作
    2、后面的Select语句有问题,操作了7000多条数据,有可能是使用了表扫描,即没有正确的建立索引。
    3、如果是大批量使用数据,建议使用BCP命令,这样可以在一分钟内插入大量数据,当然前提是服务器上关于Blug insert选项要开放。
    \
      

  6.   

    那个表没有建立索引,建立了之后也没有太大效果。但是有insert触发器,触发修改另一个表