Хранимая процедура Sybase SQL занимает слишком много памяти
Я пытаюсь запустить хранимую процедуру с циклом while, используя Aqua Data Studio 6.5, и как только SP запускается, Aqua Data начинает потреблять все больший объем памяти моего процессора, что для меня абсолютно бессмысленно, потому что все должно быть отключено. сервер Sybase, с которым я работаю. Я прокомментировал и протестировал каждую часть SP и сузил проблему до цикла while. Может кто-нибудь объяснить мне, что происходит?
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
вернуть
1 ответ
Решение
Сколько раз повторяется цикл while? Я подозреваю, что Aqua Data Studio создает структуры данных по мере выполнения запроса, и для каждой итерации цикла необходим дополнительный блок памяти для каталогизации плана / статистики этой итерации.