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
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 |