我試圖用Aqua Data Studio 6.5在while循環中運行存儲過程,一旦SP啓動Aqua Data開始消耗越來越多的CPU內存,對我來說絕對沒有意義,因爲我正在使用的Sybase服務器上的所有內容都應該關閉。我已經評論和測試了SP的每一部分,並將問題縮小到while循環。任何人都可以向我解釋發生了什麼事?Sybase SQL存儲過程消耗太多內存
create procedure sp_check_stuff as
begin
declare
@counter numeric (9),
@max_id numeric (9),
@exists numeric (1),
@rows numeric (1)
select @max_id = max(id)
from my_table
set @counter = 0
set @exists = 0
set @rows = 0
while @count <= @max_id
begin
//More logic which doesn't affect memory usage based
//on commenting it out and running the SP
set @counter = @counter + 1
set @exists = 0
set @rows = 0
end
end
回報
當然,如果你可以完全避免循環,你會更好。不知道你的循環是什麼,很難說是否可以避免。但其中大多數可以用數據庫更喜歡的基於集合的邏輯來替代,而且通常比循環快得多。 – HLGEM 2010-05-18 20:42:15
如果您正在循環存儲過程,則可能是您做錯了。 – Joe 2010-05-18 22:37:50