using for rec inside a function: behavior very slow

Поиск
Список
Период
Сортировка
От Jie Liang
Тема using for rec inside a function: behavior very slow
Дата
Msg-id Pine.BSF.4.10.10104021504210.82239-100000@tidal.ipinc.com
обсуждение исходный текст
Ответ на Re: Fwd: Calling functions inside a function: behavior  (edipoelder@ig.com.br)
Ответы Re: using for rec inside a function: behavior very slow  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
I have a function:
CREATE FUNCTION hasdup(text) RETURNS int4 AS '
declare  v_id         int4;  rat1         text;  rat2         text;  v_url        text;  rec          record;

begin    select id into v_id from urlinfo where url = $1;    if NOT FOUND then       return -1;    end if;    select
codestr(v_id)into rat1;    v_url:= $1||''%'';                    for rec in select id,url from urlinfo where url like
v_urlorder by
 
url loop       raise notice ''%'',rec.url;          select codestr(rec.id) into rat2;          if rec.id <> v_id and
rat1= rat2 then             update urlinfo set list = 1 where id = rec.id;             return rec.id;           end if;
  end loop;     return 0;
 
end; 
' LANGUAGE 'plpgsql';


'where url like clause' is very slow in inside the function,
but when I directly use this statement in SQL, it is very quick,
is any quick way to return match:
where field like 'something%' inside the plsql function??


Jie LIANG

St. Bernard Software

10350 Science Center Drive
Suite 100, San Diego, CA 92121
Office:(858)320-4873

jliang@ipinc.com
www.stbernard.com
www.ipinc.com




В списке pgsql-sql по дате отправления:

Предыдущее
От: edipoelder@ig.com.br
Дата:
Сообщение: Re: Fwd: Calling functions inside a function: behavior
Следующее
От: Jie Liang
Дата:
Сообщение: select statement inside a function: behavior bad