"必须你要提取的数据有那么多."
这句话不是很明白。
用bulk insert据说速度很快但是只能是从文件到表sqlserver里难道没有表对表大数据量复制的东东么?
DTS是不是速度会快一些呢?

解决方案 »

  1.   

    打错字,我是说你要提取的数据有那么多,当然就影响速度.用bulk insert从文件到表的处理与表对表的处理不同.
    不知道你操作的记录大慨有多少条?
      

  2.   

    --你先试试直接执行这个,看系统开销大不大,如果也很大,那先考虑优化表结构,如果开销不大,那就想不到好办法了.select id1,id2 
    from total a inner join total1 b 
    on total1.id=total.id
      

  3.   

    记录条数大约400万条左右,如果不用insert 直接
    select id1,id2 
    from total a inner join total1 b 
    on total1.id=total.id
    看了一下i/o成本还是很大
    i/o是0.03765
    cup是0.000106
      

  4.   

    insert into ##tmp(id1,id2) select id1,id2 from total a inner join total1 b 
    on total1.id=total.id
      

  5.   

    insert into ##tmp(id1,id2) select id1,id2 from total a inner join total1 b 
    on total1.id=total.id
    -------------
    难道说insert into要比select into速度快,没有可能吧?
      

  6.   

    那关键的问题是出在数据检索上,你的表有没有建立必要的索引?
    total1.id 上应该有索引另外,表中的记录有400万条,如果id不是主键的话,产生的结果>=400万条.这样多的记录,如果没必要,可以直接在原表上处理,速度会快
    如果一定要用临时表,也建议分段处理.
      

  7.   

    不好意思我是菜鸟,问一下那些什么cpu,什么i/o在哪里看,还有运行的时间 
    多谢各位高手的回答
      

  8.   

    一次性insert400万条可怕怎么都快不了,除了建索引外,你试一下分批处理(每几十万一批)可能还会快点