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,无疑是雪上加霜。游标还是慎用为好啊!

  • 相关阅读:
    Request的方法演示
    Request内置对象
    Servlet运行机制
    Servlet生命周期
    Servlet概念与配置
    http协议
    数据库连接池
    代码管理git托管到码云(github)开源中国
    事务
    类的执行先后顺序
  • 原文地址:https://www.cnblogs.com/anson/p/1311526.html
Copyright © 2011-2022 走看看