我们公司的SQL在执行数据的时候总是堵塞,到底如何解决这个问题啊,救命啊!!而且有一个存储过程堵的最严重,到底是怎么回事啊,请教

解决方案 »

  1.   

    能不能把你公司的表结构贴出来,另外找出经常堵塞的程序段或sql语句,分析其速度慢的原因,看能不能更改一下,最后就可能是你的表要索引优化一下了
      

  2.   


    ALTER    PROCEDURE SOF_getmaxbh 
       @biaoshi varchar(3), --单据类型标识
       @addflag integer, --0,1  在前台使用;2 组成一个号返回,序号不加1(结转号),3 序号加 1 返回(单据编号);
       @maxbh varchar(11)=NULL output  --直接返回编号
     AS
     
     /***************************************************************/
     --过程主题:获得单据编号   errorID=1800
     /***************************************************************/
     
     --内部变量声明
     declare @recnum integer,
             @rowcount integer
     set @recnum=0
     /*非事务内容执行*/
     
     --每一过程拥有一唯一区界号,过程内的异常编号在此基础上增加
     declare @errcode integer
     set @errcode=1800         
     declare @return integer
     set @return=0
     
     --启动事务处理
     declare @tran_point int --控制事务嵌套
     set @tran_point=@@trancount --保存事务点
     if @tran_point=0
      begin tran tran_SOF_getmaxbh
     else
      save tran tran_SOF_getmaxbh
     
     if @addflag=1 or @addflag=3
     begin 
       update maxbh set @recnum=recnum=recnum+1 where biaoshi=@biaoshi
       set @rowcount=@@rowcount
       if @@error<>0
       begin
         set @return=1
         goto err_lab
       end 
     end
     else
     begin
       select @recnum=recnum from maxbh(nolock) where biaoshi=@biaoshi
     end
     
     if @rowcount=0 
     begin
       set @recnum=0
       insert into maxbh (biaoshi,maxbh,mkbh,recnum) values (@biaoshi,'','',@recnum)
     end
     
     --返回结果
     declare @s_recnum varchar(11)
     set @s_recnum=LTRIM(str(@recnum))
     
     if @addflag>1
       set @maxbh=@biaoshi+ REPLICATE('0',11-len(@biaoshi)-len(@s_recnum))+@s_recnum
     else
       select @biaoshi+ REPLICATE('0',11-len(@biaoshi)-len(@s_recnum))+@s_recnum as recnum
     
     --结束事务处理
     if @tran_point=0
      commit tran tran_SOF_getmaxbh
     goto return_lab
     err_lab:
     if @return<100 set @return=@errcode +@return
     rollback tran tran_SOF_getmaxbh
     return_lab:
     return @return