SQL2000游標引發的效能問題!

2022-02-02 17:54:11 字數 960 閱讀 7730

今天客戶反饋到這樣乙個問題,同樣乙個頁面不同的使用者進入,有些使用者不會出錯,有些使用者則顯示:

sql錯誤:超時時間已到。在操作完成之前超時時間已過或伺服器未響應。這樣的錯誤。

於是我查了一下資料庫,發現凡是出錯的使用者都具有相同的乙個特點:就是資料量較大。

再查詢程式,原來sql語句:用了function,function 裡還用了游標。

select *,dbo.f_acceptunit as unit  from iw_sendinfo

create function f_acceptunit(@sid int ,@uid int)

returns varchar(4000)

asbegin

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 +','

endclose dname_cursor

deallocate dname_cursor

return @unit

end sql2000裡面本來游標的效能就比較低下,然後sql裡面再查詢function,無疑是雪上加霜。游標還是慎用為好啊!

sql2000 游標的使用

一般情況下游標的使用應遵循以下5個步驟 1.宣告游標 2.開啟游標 3.從游標讀取行,並有選擇地進行處理 4.關閉游標 5.釋放游標 use pubs 宣告變數 declare title varchar 100 price smallmobey 宣告游標 declare price cursor ...

SQL2000檢視表的大小

以前檢視乙個巨大的資料庫,想把裡面沒用的東西刪了,減少資料庫檔案的大小,但是不知道如何或者其中某個表的大小,後來經過一番努力終於找到如何檢視sql server 2000 中資料表大小的方法了,在sql server 2005中,微軟發布了乙個報表,可以直接檢視,但是這個報表不能用於sql serv...

解密SQL2000的儲存過程

內容來自網際網路,作者不明 drop procedure sp decrypt gocreate procedure sp decrypt objectname varchar 50 asbegin begin transaction add by playyuer declare objectna...