Tom Lane wrote:
> 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.
Does it also throw out unnecessary columns in the GROUP BY? Like when
the GROUP BY contains multiple columns of which one (or a set) already
uniquely identifies every row.
regards,
Lukas