if exists(select ReplyID from Life_Tbl_Reply where ReplyID=@ReplyID and @AuditState='02')
 begin
if(@AuditState='02')
        begin
               --不修改记录    
        end
else
        begin      
       --修改记录
        end
end
else
  begin
    if(@AuditState='02')
        begin
               --修改记录    
        end
else
        begin
   --不修改记录
        end
  end 和 select @Num=count(*) from Life_Tbl_Reply where ReplyID=@ReplyID and @AuditState='02'   begin
          --update b from a=@Num
   end这两段sql代码哪一段效率高?谢谢!

解决方案 »

  1.   

    前者看的都晕呼
    用2吧,清晰,效也高,比1至少一个exists判断
      

  2.   

    1是怎么写出来的,如果存在@AuditState='02'。里面再判断if(@AuditState='02')?
      

  3.   

    if exists(select ReplyID from Life_Tbl_Reply where ReplyID=@ReplyID and @AuditState='02')
     begin
      --不修改记录   
    end
    else
      begin
      if(@AuditState='02')
      begin
      --修改记录   
      end
    else
      begin
    --不修改记录
      end
      end 
    第一个可以改成上面这样先不说效率 这2个语句块得到的结果应该是不同的吧
      

  4.   

    第一个方法可以简化为这样:
    if exists
       (
        select ReplyID 
        from Life_Tbl_Reply 
        where ReplyID=@ReplyID and @AuditState='02'
       )
      begin
        if(@AuditState<>'02')
          begin   
          --修改记录
          end
      end
    else
      begin
        if(@AuditState='02')
          begin
          --修改记录   
          end
      end  
      

  5.   

    都是起到统计数量的作用
    不过第一种是在原来数据上加1,而第二种是直接count修改记录
      

  6.   

    我考虑了下,lz的ReplyID=@ReplyID and @AuditState='02'只是作为一个判断条件出现,而非只是修改这部分,所以判定条件好像无法再精简了,这个修改记录的语句可以很活。