Re: Subquery in a JOIN not getting restricted?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Subquery in a JOIN not getting restricted?
Дата
Msg-id 8071.1320938568@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Subquery in a JOIN not getting restricted?  (Jay Levitt <jay.levitt@gmail.com>)
Ответы Re: Subquery in a JOIN not getting restricted?  (Jay Levitt <jay.levitt@gmail.com>)
Re: Subquery in a JOIN not getting restricted?  (Jay Levitt <jay.levitt@gmail.com>)
Список pgsql-performance
Jay Levitt <jay.levitt@gmail.com> writes:
> If the query was more like

> select questions.id
> from questions
> join (
>    select sum(u.id)
>    from users as u
>    group by u.id
> ) as s
> on s.id = questions.user_id
> where questions.id = 1;

> would you no longer be surprised that it scanned all user rows?

Don't hold your breath waiting for that to change.  To do what you're
wishing for, we'd have to treat the GROUP BY subquery as if it were an
inner indexscan, and push a join condition into it.  That's not even
possible today.  It might be possible after I get done with the
parameterized-path stuff I've been speculating about for a couple of
years now; but I suspect that even if it is possible, we won't do it
for subqueries because of the planner-performance hit we'd take from
repeatedly replanning the same subquery.

I'd suggest rephrasing the query to do the join underneath the GROUP BY.

            regards, tom lane

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

Предыдущее
От: Craig Ringer
Дата:
Сообщение: Re: IMMUTABLE STABLE functions, daily updates
Следующее
От: Jay Levitt
Дата:
Сообщение: Re: Subquery in a JOIN not getting restricted?