以前还没发觉,现在新把一个库移到2005 (还是X64版的),用FAST_FORWARD游标从一个表往另外几个表倒入数据,那叫一个慢……
有哪位有这方面优化经验的进来说说。

解决方案 »

  1.   

    DECLARE Flow_CUR CURSOR FAST_FORWARD FOR SELECT
    Col1
       FROM    Flow  FOR READ ONLY   OPEN  FullFlow_CUR
       FETCH FullFlow_CUR INTO 
    @tempstr1   WHILE (@@FETCH_STATUS) = 0
       BEGIN
    ……………………   FETCH Flow_CUR INTO 
    @tempstr1
       END
       CLOSE Flow_CUR   DEALLOCATE Flow_CUR
      

  2.   

    會不會不是cursor的問題...
    要不什麼都不讓它干,就跑圈游標看看?會不會慢

      

  3.   

    如果不更新的话,你在指定一个static属性试试.
    慢应该是while的问题吧,你在2000上面试了,效率能差多少?
      

  4.   

    执行下面的语句, 把所有的索引重新建立一次:USE 你的库名
    EXEC sp_msforeachtable N'
    RAISERROR(N''*** ------- reindex on "?"'', 10, 1) WITH NOWAIT
    DBCC DBREINDEX(N''?'')'
      

  5.   

    试了下改成static好像快了那么一点点,但还是非常慢,还有原来的表里面都没有索引的,都是一些临时表
      

  6.   

    跟.NET沾上边就会慢点!微软的产品越来越占系统资源了!
      

  7.   

    還沒有來的及學SQL SERVER 2005
      

  8.   

    是的很奇怪,我这里有两台机器,分别跑了一下,结果完全不同,都加了FAST_FORWARD,一个速度非常快,一个很慢。
    注。。都是SQL SERVER 2005
      

  9.   

    那看来是机子的问题不过SQL2005的事吧?
      

  10.   

    我是lz,现在问题解决了。
    数据库是这样的,log文件放在本地raid1上,data文件放在raid50阵列上。
    看了一下本地raid1阵列没有打开写入缓存,打开之后速度快了十倍不止。
    不过raid1阵列卡没有电池,是个安全隐患。现在改成散分贴,顶贴有分
      

  11.   

    哈哈,今天我也发现了这个问题,呵呵确实是硬盘的问题,硬盘写入速度跟不上CPU的速度,但是不知道怎么打开RAID的缓存,小日本的机器看不懂。