Re: How to create an index for type timestamp column using rtree?

Lists: pgsql-performance
From: Chris Cheston <ccheston(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: How to create an index for type timestamp column using rtree?
Date: 2004-07-13 05:51:27
Message-ID: e071108e040712225174cda991@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Hi all,

I'm storing some timestamps as integers (UTF) in a table and I want to
query by <= and >= for times between a certain period. The table has
gotten quite large and is now very slow in querying.

I think it's time to create an index for the timestamp column.

I tried using an rtree (for <= and >= optimization):

create INDEX logs_timestamp ON logs using rtree (timestamp);

but I get

ERROR: data type integer has no default operator class for access
method "rtree"
You must specify an operator class for the index or define a
default operator class for the data type

Do I have to create an rtree type for my timestamp integer column?

Existing rtree columns are below.

Pls help.

Thanks,
Chris

server=> select am.amname as acc_method, opc.opcname as ops_name from
pg_am am, pg_opclass opc where opc.opcamid = am.oid order by
acc_method, ops_name;
acc_method | ops_name
------------+-----------------
btree | abstime_ops
btree | bit_ops
btree | bool_ops
btree | bpchar_ops
btree | bytea_ops
btree | char_ops
btree | cidr_ops
btree | date_ops
btree | float4_ops
btree | float8_ops
btree | inet_ops
btree | int2_ops
btree | int4_ops
btree | int8_ops
btree | interval_ops
btree | macaddr_ops
btree | name_ops
btree | numeric_ops
btree | oid_ops
btree | oidvector_ops
btree | text_ops
btree | time_ops
btree | timestamp_ops
btree | timestamptz_ops
btree | timetz_ops
btree | varbit_ops
btree | varchar_ops
hash | bpchar_ops
hash | char_ops
hash | cidr_ops
hash | date_ops
hash | float4_ops
hash | float8_ops
hash | inet_ops
hash | int2_ops
hash | int4_ops
hash | int8_ops
hash | interval_ops
hash | macaddr_ops
hash | name_ops
hash | oid_ops
hash | oidvector_ops
hash | text_ops
hash | time_ops
hash | timestamp_ops
hash | timestamptz_ops
hash | timetz_ops
hash | varchar_ops
rtree | bigbox_ops
rtree | box_ops
rtree | poly_ops
(51 rows)


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Chris Cheston <ccheston(at)gmail(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: How to create an index for type timestamp column using rtree?
Date: 2004-07-13 06:14:57
Message-ID: 11800.1089699297@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Chris Cheston <ccheston(at)gmail(dot)com> writes:
> I'm storing some timestamps as integers (UTF) in a table and I want to
> query by <= and >= for times between a certain period.

btree can handle range queries nicely; why do you think you need an
rtree? rtree is for 2-dimensional datums which a timestamp is not ...

regards, tom lane


From: Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)au>
To: Chris Cheston <ccheston(at)gmail(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: How to create an index for type timestamp column using
Date: 2004-07-13 06:33:48
Message-ID: 40F3824C.8090607@familyhealth.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

> I'm storing some timestamps as integers (UTF) in a table and I want to
> query by <= and >= for times between a certain period. The table has
> gotten quite large and is now very slow in querying.
>
> I think it's time to create an index for the timestamp column.

Uh, yeah.

> I tried using an rtree (for <= and >= optimization):

Bad idea.

> Do I have to create an rtree type for my timestamp integer column?

Why do you want an rtree index? They're for multidimensional polygonal
data and stuff. Just create a normal index...

Chris


From: Chris Cheston <ccheston(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: How to create an index for type timestamp column using rtree?
Date: 2004-07-13 07:56:02
Message-ID: e071108e04071300564c0c5379@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-performance

Thanks, Chris and Tom.
I had read *incorrectly* that rtrees are better for <= and >= comparisons.

Chris

On Tue, 13 Jul 2004 14:33:48 +0800, Christopher Kings-Lynne
<chriskl(at)familyhealth(dot)com(dot)au> wrote:
> > I'm storing some timestamps as integers (UTF) in a table and I want to
> > query by <= and >= for times between a certain period. The table has
> > gotten quite large and is now very slow in querying.
> >
> > I think it's time to create an index for the timestamp column.
>
> Uh, yeah.
>
> > I tried using an rtree (for <= and >= optimization):
>
> Bad idea.
>
> > Do I have to create an rtree type for my timestamp integer column?
>
> Why do you want an rtree index? They're for multidimensional polygonal
> data and stuff. Just create a normal index...
>
> Chris
>
>