Re: Avoid extra Sort nodes between WindowAggs when sorting can bereused
От | Daniel Gustafsson |
---|---|
Тема | Re: Avoid extra Sort nodes between WindowAggs when sorting can bereused |
Дата | |
Msg-id | CB170BD6-E458-4F15-84F0-46CD8170F522@yesql.se обсуждение исходный текст |
Ответ на | Avoid extra Sort nodes between WindowAggs when sorting can be reused (Daniel Gustafsson <daniel@yesql.se>) |
Ответы |
Re: Avoid extra Sort nodes between WindowAggs when sorting can bereused
|
Список | pgsql-hackers |
> On 30 May 2018, at 18:19, Daniel Gustafsson <daniel@yesql.se> wrote: > > Currently, we can only reuse Sort nodes between WindowAgg nodes iff the > partitioning and ordering clauses are identical. If a window Sort node > sortorder is a prefix of another window, we could however reuse the Sort node > to hopefully produce a cheaper plan. In src/backend/optimizer/plan/planner.c > there is a comment alluding to this: > > * ... > * > * There is room to be much smarter here, for example detecting whether > * one window's sort keys are a prefix of another's (so that sorting for > * the latter would do for the former), or putting windows first that > * match a sort order available for the underlying query. For the moment > * we are content with meeting the spec. > */ > > The attached patch takes a stab at implementing the sorting on partitioning/ > ordering prefix, inspired by a similar optimization in the Greenplum planner. > In testing the impact on planning time seems quite minimal, or within the error > margin. Attached is a rebased v2 addressing off-list review comments and including a test. Parking this in the commitfest. cheers ./daniel
Вложения
В списке pgsql-hackers по дате отправления: