Re: Help with query: indexes on timestamps

From: Richard Huxton <dev(at)archonet(dot)com>
To: "Keith C(dot) Perry" <netadmin(at)vcsn(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Help with query: indexes on timestamps
Date: 2004-07-07 17:28:41
Message-ID: 40EC32C9.9050008@archonet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Keith C. Perry wrote:
>
> I have a table with with 1 million records in it. Here is the definition
>
> CREATE TABLE report
> (
> match int4,
> action varchar(16),
> stamp timestamptz,
> account varchar(32),
> ipaddress inet,
> profile varchar(16),
> rating text,
> url text
> )
> WITHOUT OIDS;
>
> The is one index:
>
> CREATE INDEX stamp_idx
> ON report
> USING btree
> (stamp);
>
> That query I'm running is:
>
> SELECT date_part('hour'::text, report.stamp) AS "hour", count(*) AS count
> FROM report
> GROUP BY date_part('hour'::text, report.stamp)
> ORDER BY date_part('hour'::text, report.stamp);

You will always get a sequential scan with this query - there is no
other way to count the rows.

With PostgreSQL being MVCC based, you can't know whether a row is
visible to you without checking it - visiting the index won't help. Even
if it could, you'd still have to visit every row in the index.

Assuming the table is a log, with always increasing timestamps, I'd
create a summary table and query that.

--
Richard Huxton
Archonet Ltd

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Mike Mascari 2004-07-07 17:31:01 Why do subselects in target lists behave differently wrt implicit casts?
Previous Message Keith C. Perry 2004-07-07 17:04:05 Help with query: indexes on timestamps