[GENERAL] Can somebody explain what is the meaning for HashAggregate?

2015-09-20 Thread lin
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

Re: [GENERAL] Can somebody explain what is the meaning for HashAggregate?

2015-09-20 Thread Bill Moran
On Sun, 20 Sep 2015 21:56:39 +0800 (CST)
lin  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


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general