Re: Stored Procedure performance / elegance question

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: Stored Procedure performance / elegance question
Дата
Msg-id b42b73150609081359u232315f0m490de3b7504100f8@mail.gmail.com
обсуждение исходный текст
Ответ на Stored Procedure performance / elegance question  ("Karen Hill" <karen_hill22@yahoo.com>)
Ответы Re: Stored Procedure performance / elegance question
Список pgsql-general
On 8 Sep 2006 11:57:54 -0700, Karen Hill <karen_hill22@yahoo.com> wrote:
> I know that the planner does not store the plan when EXECUTE is used in
> a function, but the function looks better when the sql is created
> dynamically.

my general rule is use static when you can, dynamic when you have to.
this is a very trivial case which does not get into some of the
problems with dynamic sql.  however, if you are taking parameters that
alter the actual structure of the query, dynamic might be appropriate.

>   FOR rec IN SELECT * FROM test WHERE mydate > $1 LOOP
>       myval := rec.x
>       RETURN NEXT;
>   END LOOP;
> RETURN;
> END IF;

you could of course do:
FOR rec IN SELECT * FROM test WHERE $1 is null or mydate > $1 loop [...]
or some such.

also, you will get much better performance if you pass back a
refcursor from the function instead of a setof record.  return next is
not advisable except for very small result sets.

merlin

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

Предыдущее
От: Francisco Reyes
Дата:
Сообщение: Determining right size for max_fsm_pages on large setup?
Следующее
От: Vivek Khera
Дата:
Сообщение: Re: Determining right size for max_fsm_pages on large setup?