Re: Index not recognized

From: Greg Stark <gsstark(at)mit(dot)edu>
To: "Grace C(dot) Unson" <gracec(at)ntsp(dot)nec(dot)co(dot)jp>
Cc: "PgSQL SQL" <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Index not recognized
Date: 2003-12-07 00:36:40
Message-ID: 87ptf11n1j.fsf@stark.dyndns.tv
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql


"Grace C. Unson" <gracec(at)ntsp(dot)nec(dot)co(dot)jp> writes:

> Why is it that my index for text[] data type is not recognized by the
> Planner?
>
> I did these steps:
>
> 1. create function textarr(text[]) returns text language sql as 'select
> $1[1]' strict immutable
> 2. create index org_idx on EmpData (textarr(org));

This index will only be used if you use the expression textarr(org) in your
query. You would probably have some success if you did:

select * from empdata where textarr(org) = 'math'

> 3. vacuum full
> 4. explain analyze select name from EmpData where org *= 'math';

Is this *= operator from the contrib/array directory? It's not an indexable
operator at all using standard btree indexes.

The GiST indexing does make indexable operators that can do things like *= but
that's a whole other ball of wax.

What are you really trying to do?

> Result:
> =========
> Seq Scan on EmpData (cost=0.00..3193.20 rows=102 width=488)
> (actual time=3.71.35..371.35 rows=0 loops=1)
>
> Filter: (org[0]='math'::text)

Well that's awfully odd. I don't know how that expression came out of the
query you gave. You'll have to give a lot more information about how you're
defining *= and why you think it's related to the function you used to define
the index.

--
greg

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message jeff 2003-12-07 16:16:44 How to specify the beginning of the month in Postgres SQL syntax?
Previous Message Bruce Momjian 2003-12-06 23:54:27 Re: Is it possible to set a NOT NULL constraint deferrable?