Re: Repeat execution of stable expressions

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: Repeat execution of stable expressions
Дата
Msg-id CAHyXU0wPD00FQJAw3Yx3MhKiEthWtf07eeATNGOczK=ase1sfw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Repeat execution of stable expressions  (Peter van Hardenberg <pvh@pvh.ca>)
Список pgsql-performance
On Mon, Mar 5, 2012 at 6:41 PM, Peter van Hardenberg <pvh@pvh.ca> wrote:
> On Mon, Mar 5, 2012 at 3:15 PM, Merlin Moncure <mmoncure@gmail.com> wrote:
>> I've complained many times that
>> select (f()).*;
>>
>> will execute f() once for each returned field of f() since the server
>> essentially expands that into:
>>
>> select f().a, f().b;
>>
>
> oh, this is why we expand rows inside a WITH statement.
>
> it should probably be fixed, but you should find something like
>
> WITH fn AS SELECT f(),
> SELECT (fn).a, (fn).b
>
> will make your life better

sure, but WITH is an optimization fence.  I use a lot of views, and if
you wrap your view with WITH, then your quals won't get pushed
through. ditto if you use the 'OFFSET 0' hack to keep the subquery
from being flattened out.

merlin

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

Предыдущее
От: Rory Campbell-Lange
Дата:
Сообщение: Re: Advice sought : new database server
Следующее
От: Jan Otto
Дата:
Сообщение: Re: Repeat execution of stable expressions