Re: Speed of the stored procedures?

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: Speed of the stored procedures?
Дата
Msg-id 20040709062020.O29592@megazone.bigpanda.com
обсуждение исходный текст
Ответ на Speed of the stored procedures?  (Dmitry Karasik <dmitry@karasik.eu.org>)
Список pgsql-novice
On Fri, 9 Jul 2004, Dmitry Karasik wrote:

> Can anyone explain what may be the reason to the drastic difference
> in the execution speed of the same SQL statement, executed from the
> command line and from inside the stored procedure? Or, which is
> more important, how to fight this?

Those aren't the same statements precisely.  In one case there's a given
anchored constant which can be used for purposes of planning and for
converting to an index condition.  In the other, it's a variable, and
there's no way to know that you will not pass '%foo' or some other
non-anchored string.

If you want to replan inside the function using the actual passed value,
you can use some EXECUTE variant (probably FOR ... IN EXECUTE since you
want a value out).

Something like the untested:

CREATE OR REPLACE FUNCTION
f_test(TEXT)
RETURNS integer AS '
DECLARE
        p_from ALIAS FOR $1;
        c INTEGER;
    r record;
BEGIN
    FOR r IN EXECUTE ''select count(id) as c FROM queues WHERE
hostname LIKE '' || quote_literal(p_from) LOOP
        RETURN r.c;
    END LOOP;
    RETURN NULL;
END;
' LANGUAGE 'plpgsql';


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

Предыдущее
От: "M. Bastin"
Дата:
Сообщение: Extended query: parse command freezes backend
Следующее
От: Eduardo Vázquez Rodríguez
Дата:
Сообщение: Limit with serial