Re: select max(field) from table much faster with a group by clause?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Palle Girgensohn <girgen(at)pingpong(dot)net>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: select max(field) from table much faster with a group by clause?
Date: 2007-11-01 13:43:39
Message-ID: 4305.1193924619@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Palle Girgensohn <girgen(at)pingpong(dot)net> writes:
> When running
> select max("when") from login where userid='userid'
> it takes a second or two, but when adding "group by userid" the planner
> decides on using another plan, and it gets *much* faster. See example below.

It's only faster for cases where there are few or no rows for the
particular userid ...

> Number of tuples per user varies from zero to a couple of thousands.

The planner is using an intermediate estimate of 406 rows. You might be
well advised to increase the statistics target for login.userid --- with
luck that would help it to choose the right plan type for both common
and uncommon userids.

regards, tom lane

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Palle Girgensohn 2007-11-01 14:20:14 Re: select max(field) from table much faster with a group by clause?
Previous Message Tom Lane 2007-11-01 13:29:56 Re: [Fwd: Re: Outer joins and Seq scans]