pg.ddx.io pgsql-performance@postgresql.org mailing list archive
help / color / mirror / Atom feed From: Craig James <craig_james@emolecules.com>
To: pgsql-performance@postgresql.org
Subject: Re: count * performance issue
Date: Thu, 06 Mar 2008 07:28:50 -0800
Message-ID: <47D00DB2.7040007@emolecules.com> (raw )
In-Reply-To: <Pine.GSO.4.64.0803060813570.11897@westnet.com >
References: <f966c2ee0803052142l6a105678jfe2da92a0d9371@mail.gmail.com >
<f966c2ee0803052143k4570d771o6c300647d3b987d@mail.gmail.com >
<20080306060829.GA21084@a-kretschmer.de >
<bf54be870803052215y5bb56235k5ea05ada1d701022@mail.gmail.com >
<47CF8EA6.8070503@mark.mielke.cc >
<20080306063643.GB21084@a-kretschmer.de >
<f966c2ee0803052243w723e2866gbfc37128620d1c6d@mail.gmail.com >
<B94D3180-BB72-43EB-BA1E-90CF53705386@fastcrypt.com >
<f966c2ee0803060358k14dd7374h8ef3f4ca0818b04@mail.gmail.com >
<3E9C3A51-C28E-4B75-9739-E344DAC72880@fastcrypt.com >
<f966c2ee0803060443j3d9c1b66x5f59e00d084e841c@mail.gmail.com >
<Pine.GSO.4.64.0803060813570.11897@westnet.com >
In the 3 years I've been using Postgres, the problem of count() performance has come up more times than I can recall, and each time the answer is, "It's a sequential scan -- redesign your application."
My question is: What do the other databases do that Postgres can't do, and why not?
Count() on Oracle and MySQL is almost instantaneous, even for very large tables. So why can't Postgres do what they do?
On the one hand, I understand that Postgres has its architecture, and I understand the issue of row visibility, and so forth. On the other hand, my database is just sitting there, nothing going on, no connections except me, and... it takes FIFTY FIVE SECONDS to count 20 million rows, a query that either Oracle or MySQL would answer in a fraction of a second. It's hard for me to believe there isn't a better way.
This is a real problem. Countless people (including me) have spent significant effort rewriting applications because of this performance flaw in Postgres. Over and over, the response is, "You don't really need to do that ... change your application." Well, sure, it's always possible to change the application, but that misses the point. To most of us users, count() seems like it should be a trivial operation. On other relational database systems, it is a trivial operation.
This is really a significant flaw on an otherwise excellent relational database system.
My rant for today...
Craig
view thread (62+ messages) latest in thread
Message-ID: <47D00DB2.7040007@emolecules.com>
Permalink: ../47D00DB2.7040007@emolecules.com/
Also on: postgresql.org/message-id/47D00DB2.7040007@emolecules.com
copy link · copy postgr.es
reply Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-performance@postgresql.org
Cc: craig_james@emolecules.com
Subject: Re: count * performance issue
In-Reply-To: <47D00DB2.7040007@emolecules.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox