while you weren't looking, Matthew Nuzum wrote:
> select accountid, min(atime) as atime, sessionid from usage_access
> group by accountid,sessionid;
Try something along the lines of:
, (select atime
where sessionid = ua.sessionid
and accountid = ua.accountid
order by atime asc
) as atime
from usage_access ua
group by accountid
min() and max() currently do table scans, which, on large tables, or
even moderately sized tables with large numbers of accounts/sessions,
can add up. You'll need to replace asc with desc in the subquery for
the max() version.
This form cheats a bit and uses the index to find the highest and
lowest values, provided you've created the appropriate indices.
This is, IIRC, in the FAQ.
In response to
pgsql-performance by date
|Next:||From: Tom Lane||Date: 2005-03-24 19:32:59|
|Subject: Re: pg_autovacuum not having enough suction ? |
|Previous:||From: Tom Lane||Date: 2005-03-24 19:22:22|
|Subject: Re: BUG #1552: massive performance hit between 7.4 and 8.0.1 |