I wrote:
> If you don't want an ORDER BY, maybe turn off enable_hashagg for
> these queries? But you'll get the same plan either way.
Or not ... I forgot it has a better model of the rowcount changes now:
regression=# explain SELECT few.dataa, count(*), min(id), max(id), unnest('{1,1,3}'::int[]) FROM few WHERE few.id = 1
GROUPBY few.dataa, unnest('{1,1,3}'::int[]) order by few.dataa, unnest('{1,1,3}'::int[]);
QUERY PLAN
-----------------------------------------------------------------------
Sort (cost=27.75..27.76 rows=4 width=52)
Sort Key: dataa, (unnest('{1,1,3}'::integer[]))
-> HashAggregate (cost=27.66..27.71 rows=4 width=52)
Group Key: dataa, unnest('{1,1,3}'::integer[])
-> ProjectSet (cost=0.00..22.66 rows=400 width=40)
-> Seq Scan on few (cost=0.00..20.62 rows=4 width=36)
Filter: (id = 1)
(7 rows)
regression=# set enable_hashagg TO 0;
SET
regression=# explain SELECT few.dataa, count(*), min(id), max(id), unnest('{1,1,3}'::int[]) FROM few WHERE few.id = 1
GROUPBY few.dataa, unnest('{1,1,3}'::int[]);
QUERY PLAN
-----------------------------------------------------------------------
GroupAggregate (cost=39.94..45.99 rows=4 width=52)
Group Key: dataa, (unnest('{1,1,3}'::integer[]))
-> Sort (cost=39.94..40.94 rows=400 width=40)
Sort Key: dataa, (unnest('{1,1,3}'::integer[]))
-> ProjectSet (cost=0.00..22.66 rows=400 width=40)
-> Seq Scan on few (cost=0.00..20.62 rows=4 width=36)
Filter: (id = 1)
(7 rows)
So which plan would you rather test?
regards, tom lane