Обсуждение: How to create an index for type timestamp column using rtree?

Поиск
Список
Период
Сортировка

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

От
Chris Cheston
Дата:
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)

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

От
Tom Lane
Дата:
Chris Cheston <ccheston@gmail.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

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

От
Christopher Kings-Lynne
Дата:
> 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


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

От
Chris Cheston
Дата:
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@familyhealth.com.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
>
>