Я пытаюсь запустить хранимую процедуру с циклом while в ней с использованием Aqua Data Studio 6.5, и как только SP начнет запускать Aqua Data, начинает потреблять все большее количество памяти моего процессора, что делает абсолютно никакого смысла для меня, потому что все должно быть выключено на сервере 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
Если вы зацикливаетесь в хранимой процедуре, вероятность того, что вы делаете это неправильно. – Joe