zoukankan      html  css  js  c++  java
  • SQL2000游标引发的性能问题!

         今天客户反馈到这样一个问题,同样一个页面不同的用户进入,有些用户不会出错,有些用户则显示:

    SQL错误:超时时间已到。在操作完成之前超时时间已过或服务器未响应。这样的错误。

          于是我查了一下数据库,发现凡是出错的用户都具有相同的一个特点:就是数据量较大。

    再查询程序,原来SQL语句:用了function,function 里还用了游标。

    select *,dbo.F_AcceptUnit as Unit  from Iw_SendInfo

    Create function F_AcceptUnit(@sID int ,@UID int)
    returns varchar(4000)
    as
    begin
    declare @UnitName varchar(1000),@Unit varchar(4000)
    set @Unit=''
    DECLARE Dname_Cursor CURSOR FOR
    select Dname from IwUser where ID in (select userid from inceptinfo where sid=@sID and  userid!=@UID)
    open Dname_Cursor
    FETCH NEXT FROM Dname_Cursor
    INTO @UnitName
    WHILE @@FETCH_STATUS = 0
    BEGIN

    FETCH NEXT FROM Dname_Cursor
    INTO @UnitName
     set  @Unit =@Unit+ @UnitName +','
    end
    CLOSE Dname_Cursor
    DEALLOCATE Dname_Cursor
    return @Unit
    end

     SQL2000里面本来游标的性能就比较低下,然后SQL里面再查询function,无疑是雪上加霜。游标还是慎用为好啊!

  • 相关阅读:
    JavaScript高级-----8.函数进阶(2)
    JavaScript高级-----7.函数进阶(1)
    2014-10-18 来美半个月
    修手机记
    圆梦美利坚之三:租房记
    圆梦美利坚之二:买机票记
    Hadoop 停止Job
    IIS应用程序池数目
    HTML5 microdata
    Java sql helper[转]
  • 原文地址:https://www.cnblogs.com/anson/p/1311526.html
Copyright © 2011-2022 走看看