pengdali(大力) 大侠,你好!
这个问题,就是哪天哪个“存储过程优化”问题的续集,算奖品的哪个。
后来我用了,n_show大侠的方法,今天试了试,在查询分析其处理10000条记录只用9秒,但放在存储过程中用了4分钟,存储过程没有返回记录集。但里面用到了临时表,处理了20000左右的记录。

解决方案 »

  1.   

    获奖记录有20000左右,
    现在是调试环境:Cpu, C900内存128,
    系统是win2000,
      

  2.   

    我想是不是sqlserver有什么设置不正确。
      

  3.   

    N_Chow()的方法,产生一个大临时表。记录是:
    20000*奖品种类,如果奖品是100种就是200万条。
    要改进一下。
      

  4.   

    那个update语句应该会全表扫描。
    数据量大可以考虑用两个临时表循环来倒,对临时表加索引。
      

  5.   

    也就是exec('.......')因为没用临时表
      

  6.   

    to dododo(心奕):N_Chow的方法效率是无疑的!
    但一定要建索引,否则会出错!
    create CLUSTERED index id1 on #tmp(username asc,prizescore desc)
      

  7.   

    create CLUSTERED index id1 on #tmp(userid asc,prizescore desc)
      

  8.   

    谢谢大家。我搞定了!!!!!!!!!!(爽!)
    奖品种类(不会超过5种)比较少,我用奖品去循环,每次再用户扣除积分,
    方法与zqllyh(您问我也问总可以问出个所以然) 和 j9988(j9988) 的有差不多(从中的到的提示)效率和N_chow的差不多。
    虽然可以给客户一个交代了。但我还有一个疑虑:
    N_chow的方法在查询分析器中很快,但考到存储过程中后变的很慢,其它人的方法法都没有没有这种现象,大家来帮我分析分析
      

  9.   

    你先用嵌套游标取出奖品种类(不会超过5种)
    不回超过半秒
    然后一句select就搞定了,你为何不试试呢???
      

  10.   

    一句select肯定比你用循环、临时表快呀!
      

  11.   

    獎品種類數量若是不多,那勸你還是用其它人的方法,保險一點。:-)我一向比較喜歡挖一起旁門左道的東西(我是不是已經走火入魔了?:(,但大多看起來都是華而不實的,這只是一种樂趣。其實我在寫程式的時候,也是規規矩矩的,該用Cursor就用Cursor,決不含糊。畢竟,東西做出來是給客戶的,我相信客戶寧愿犧牲一點時間來保証資料的正確性。所以給你帶來的麻煩深表歉意。
      

  12.   

    to  N_chow(一劍飄香) 大虾
      高手就是不同!看问题,这么透彻,佩服佩服。
      不知道为何,大虾很少来sql版了呢??
      

  13.   

    to N_chow
    那里有有麻烦,我感激还来不及呢?对大侠灵巧的心思佩服不已,只不过在工作中压力大,总选一些直接的方法来提高效率(工作)。上次的贴子使我提高不少,思路开扩了许多。
    to pengdali(大力) 
    你的方法速度很快,但返回记录集的格式很难写入到库中,而产品发放要有记录,所以没用。