Re: Todo: Teach planner to evaluate multiple windows in the optimal order
От | Ankit Kumar Pandey |
---|---|
Тема | Re: Todo: Teach planner to evaluate multiple windows in the optimal order |
Дата | |
Msg-id | 6ebcc137-45ea-6373-e3e1-3c304c452e1f@gmail.com обсуждение исходный текст |
Ответ на | Re: Todo: Teach planner to evaluate multiple windows in the optimal order (David Rowley <dgrowleyml@gmail.com>) |
Ответы |
Re: Todo: Teach planner to evaluate multiple windows in the optimal order
Re: Todo: Teach planner to evaluate multiple windows in the optimal order |
Список | pgsql-hackers |
It looks like that works by accident. I see no mention of this either in the comments or in [1].
This kind of troubles me because function name select_active_windows doesn't tell me if its only job is
to reorder window clauses for optimizing sort. From code, I don't see it doing anything else either.
If we don't have one already, then we should likely add a regression test that ensures that this remains true. Since it does not seem to be documented in the code anywhere, it seems like something that could easily be overlooked if we were to ever refactor that code.
I don't see any tests in windows specific to sorting operation (and in what order). I will add those.
Also, one thing, consider the following query:
explain analyze select row_number() over (order by a,b),count(*) over (order by a) from abcd order by a,b,c;
In this case, sorting is done on (a,b) followed by incremental sort on c at final stage.
If we do just one sort: a,b,c at first stage then there won't be need to do another sort (incremental one).
Now, I am not sure if which one would be faster: sorting (a,b,c) vs sort(a,b) + incremental sort(c)
because even though datum sort is fast, there can be n number of combos where we won't be doing that.
I might be looking at extreme corner cases though but still wanted to share.
-- Regards, Ankit Kumar Pandey
В списке pgsql-hackers по дате отправления: