Обсуждение: Can somebody explain what is the meaning for HashAggregate?
Can somebody explain what does the postgres done for the explain of sql shows HashAggregate( what is the meaning for HashAggregate )?
for example:
postgres=# explain verbose select oid,relname from pg_class group by oid,relname;
QUERY PLAN
-----------------------------------------------------------------------------
HashAggregate (cost=12.42..15.38 rows=295 width=68)
Output: oid, relname
Group Key: pg_class.oid, pg_class.relname
-> Seq Scan on pg_catalog.pg_class (cost=0.00..10.95 rows=295 width=68)
Output: oid, relname
(5 rows)
:: first, seq scan pg_class and return (oid,relname);
second, make group (oid,relname), is it fisrt sort by oid then in the oid group sort by relname?
Can somebody explain what does the database done for hashAggregate?
Thanks,
wanglin
On Sun, 20 Sep 2015 21:56:39 +0800 (CST) lin <jluwln@163.com> wrote: > Can somebody explain what does the postgres done for the explain of sql shows HashAggregate( what is the meaning for HashAggregate )? > for example: > > > postgres=# explain verbose select oid,relname from pg_class group by oid,relname; > QUERY PLAN > ----------------------------------------------------------------------------- > HashAggregate (cost=12.42..15.38 rows=295 width=68) > Output: oid, relname > Group Key: pg_class.oid, pg_class.relname > -> Seq Scan on pg_catalog.pg_class (cost=0.00..10.95 rows=295 width=68) > Output: oid, relname > (5 rows) > > > :: first, seq scan pg_class and return (oid,relname); > second, make group (oid,relname), is it fisrt sort by oid then in the oid group sort by relname? > Can somebody explain what does the database done for hashAggregate? It combines the values for oid and relname for each returned row, generates a hashkey for them, then uses that hashkey to aggregate (compute the GROUP BY, essentially, in this case) -- Bill Moran