Re: LATERAL query extreme slow due to partition

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: LATERAL query extreme slow due to partition
Дата
Msg-id CAHyXU0y8-1ONVV0jzwF=kZuG8WHARdYTeJRDtUPFMU+PvwuLWQ@mail.gmail.com
обсуждение исходный текст
Ответ на LATERAL query extreme slow due to partition  (Tom Smith <tomsmith1989sk@gmail.com>)
Ответы Re: LATERAL query extreme slow due to partition  (Tom Smith <tomsmith1989sk@gmail.com>)
Список pgsql-general
On Mon, Sep 7, 2015 at 12:07 AM, Tom Smith <tomsmith1989sk@gmail.com> wrote:
> Hi:
>
> I am using the wonderful  lateral query  feature like the following
>
> select * from generate_series (1,100000,5) T(t),
>    lateral (select * from P where t between  t and t +  3)
>
> P is a parent table of a hundred partitions
> the idea is to for each t value from 1 to 100000 with step of 5,
> get rows from P (in one or two of its partitions) that  between
> the current value of t and t+3,
> so each lateral select should only index scan one or two partitons
> but the query plan shows that each will scan all hundred paritions,
> I think due to its unable to determine the range since
> the query is select * from P where t between  t and t +  3
> as "t" is unknown at the time of parsing.
>
> How to force query planner "dynamically" generate plan to
> for each lateral select query as "t" changes.

I think you're asking to much of the planner here.  The query is
planned first and executed second.  Because of that partitioning
generally depends on specific values, not dynamic ones, for exclusion
to take effect.  I would consider rewriting to loop and see if that
helps.


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

Предыдущее
От: Teodor Sigaev
Дата:
Сообщение: Re: jsonb value retrieval performance
Следующее
От: Tom Smith
Дата:
Сообщение: Re: jsonb value retrieval performance