From: | Mladen Gogala <mladen(dot)gogala(at)vmsinfo(dot)com> |
---|---|
To: | Neil Whelchel <neil(dot)whelchel(at)gmail(dot)com> |
Cc: | "pgsql-performance(at)postgresql(dot)org" <pgsql-performance(at)postgresql(dot)org> |
Subject: | Re: Slow count(*) again... |
Date: | 2010-10-11 23:50:36 |
Message-ID: | 4CB3A2CC.9070009@vmsinfo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-performance |
On 10/11/2010 3:54 PM, Neil Whelchel wrote:
> 1. A faster count(*), or something like my proposed estimate(*).
> 2. A way to get the total rows matched when using LIMIT and OFFSET before
> LIMIT and OFFSET are applied.
The biggest single problem with "select count(*)" is that it is
seriously overused. People use that idiom to establish existence, which
usually leads to a performance disaster in the application using it,
unless the table has no more than few hundred records. SQL language, of
which PostgreSQL offers an excellent implementation, offers [NOT]
EXISTS clause since its inception in the Jurassic era. The problem is
with the sequential scan, not with counting. I'd even go as far as to
suggest that 99% instances of the "select count(*)" idiom are probably
bad use of the SQL language.
--
Mladen Gogala
Sr. Oracle DBA
1500 Broadway
New York, NY 10036
(212) 329-5251
www.vmsinfo.com
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2010-10-12 00:41:50 | Re: Issues with two-server Synch Rep |
Previous Message | Jeff Davis | 2010-10-11 23:16:50 | Re: Issues with two-server Synch Rep |
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2010-10-12 00:52:23 | Re: gist indexes for distance calculations |
Previous Message | Damon Snyder | 2010-10-11 23:10:08 | Stored procedure declared as VOLATILE => no good optimization is done |