Neil Conway <neilc@samurai.com> writes:
> A simple hack might help with a subset of this problem, though. For
> queries with both ORDER BY and GROUP BY clauses, we can sort the
> grouping columns according to their position in the ORDER BY list. So,
> given a query like:
> SELECT a, b, max(c) FROM t1 GROUP BY a, b ORDER BY b;
> We can avoid the redundant sort for the ORDER BY by grouping by (b, a)
> instead. Attached is a proof-of-concept patch that implements this,
> although it's an enormous kludge.
I think that's the wrong place. transformGroupClause is the right
place. It already does some hacking to try to make the GROUP BY
semantics match ORDER BY, but it doesn't think to try reordering
the GROUP BY items.
regards, tom lane