Re: Slow counting on v9.3 - Mailing list pgsql-performance

From Mehmet Çakoğlu
Subject Re: Slow counting on v9.3
Date
Msg-id CAJX_To_eu__QRAy8EnzFmnYCU8LQ1xPCfAVoUstU3oOkvNRjVQ@mail.gmail.com
Whole thread Raw
In response to Slow counting on v9.3  (Kai Sellgren <kaisellgren@gmail.com>)
List pgsql-performance
Hi Kai, 

You are right, postgresql Count() function is slow, because; It's physically count the rows one by one. 

Other database systems using indexes for counting, but postgresql walk through all rows in multiple transactions with different row states for calculating the real row count. This is about architecture of postgresql. 

If you use WHERE condition on indexed column in your query, this will be much faster. 







On Mon, Jan 13, 2014 at 11:57 PM, Kai Sellgren <kaisellgren@gmail.com> wrote:
Hi,

I'm experiecing slow count performance:

SELECT COUNT(*) AS "count"
FROM "NewsArticle"

Takes 210 ms. I've run analyze and vacuum. I'm on 9.3. Here're the stats http://d.pr/i/6YoB

I don't understand why is it that slow. It returns 1 integer, and counts without filters.

This performs quickly:

SELECT reltuples AS count
FROM pg_class
WHERE relname = 'NewsArticle';

But I'd like to add conditions so I don't like the last method.


--
Yours sincerely,
Kai Sellgren

pgsql-performance by date:

Previous
From: Kai Sellgren
Date:
Subject: Slow counting on v9.3
Next
From: Guillaume Cottenceau
Date:
Subject: Re: Slow counting on v9.3