日期:2014-05-19  浏览次数:20377 次

请高手帮忙,让我这个程序跑快点
我的表结构为:ID   L1   L2   L3   L4   L5   L6   M
代码的意思是:
      查找出每行L1   L2   L3   L4   L5   L6的最大值,如果L1最大,则给M赋值1
                                                                                如果L2最大,则给M赋值2
                                                                                以此类推。
    我的代码为:
              CREATE   procedure   sel   as
declare   @index   integer
declare   @a   float
declare   @b   float
declare   @c   float
declare   @d   float
declare   @e   float
declare   @f   float

set   @index   =   1
while(@index   <   1297797)
begin  
set   @a   =(select   L1   from   vv   where   ID   =   @index)
set   @b   =(select   L2   from   vv   where   ID   =   @index)
set   @c   =(select   L3   from   vv   where   ID   =   @index)
set   @d   =(select   L4   from   vv   where   ID   =   @index)
set   @e   =(select   L5   from   vv   where   ID   =   @index)
set   @f   =(select   L6   from   vv   where   ID   =   @index)
if(@a   > =   @b   AND   @a   > =   @c   AND   @a     > =   @d   AND   @a     > =@e   AND   @a   > =   @f)
  begin      
      update   vv
      set   M   =   1   where   ID   =   @index
  end
else   if(@b   > =   @a   AND   @b   > =   @c   AND   @b     > =   @d   AND   @b     > =@e   AND   @b   > =   @f)
  begin
      update   vv
      set   M   =   2   where   ID   =   @index
  end
else   if(@c   > =@a   AND   @c   > =   @b   AND   @c     > =   @d   AND   @c     > =@e   AND   @c   > =   @f)
  begin
      update   vv
      set   M   =   3   where   ID   =   @index
  end
else   if(@d   > =   @a   AND   @d   > =   @b   AND   @d     > =   @c   AND   @d     > =@e   AND   @d   > =   @f)
  begin      
      update   vv
      set   M   =   4   where   ID   =   @index
  end
else   if(@e   > =   @a   AND   @e   > =@b   AND   @e