Функция работает вечно для большого количества записей
Я создал следующую функцию в Postgres 9.3.5:
CREATE OR REPLACE FUNCTION get_result(val1 text, val2 text)
RETURNS text AS
$BODY
$Declare
result text;
BEGIN
select min(id) into result from table
where id_used is null and id_type = val2;
update table set
id_used = 'Y',
col1 = val1,
id_used_date = now()
where id_type = val2
and id = result;
RETURN result;
END;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
Когда я запускаю эту функцию в цикле из 1000 или более записей, она просто останавливается и просто говорит «запрос выполняется». Когда я проверяю свою таблицу, ничего не обновляется. Когда я запускаю его для одной или двух записей, он работает нормально.
Пример функции при запуске:
select get_result('123','idtype');
столбцы таблицы:
id character varying(200),
col1 character varying(200),
id_used character varying(1),
id_used_date timestamp without time zone,
id_type character(200)
id
это индекс таблицы.
Может кто-нибудь помочь?