Re: Index on substring?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jeff Eckermann <jeckermann(at)verio(dot)net>
Cc: "'pgsql-general(at)postgresql(dot)org'" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Index on substring?
Date: 2000-10-12 05:49:19
Message-ID: 25309.971329759@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Jeff Eckermann <jeckermann(at)verio(dot)net> writes:
> extracts=# create index c_namesum_i on customers (substr(bill_company,1,5));
> ERROR: parser: parse error at or near "1"

The functional-index syntax only allows a function name applied to
simple column names.

You can work around this by defining a function that handles any
additional computation needed, eg,

create index c_namesum_i on customers (mysubstr15(bill_company));

where mysubstr15(foo) returns substr(foo,1,5). In current releases
the intermediate function has to be in C or a PL language. 7.1 will
allow a SQL-language function too (although frankly I'd recommend
against using a SQL function for indexing, on performance grounds).

There's been some talk of generalizing the functional-index support
into arbitrary-expression-index support, but it doesn't seem to be
real high on anyone's priority list.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2000-10-12 06:12:35 Re: Comments on earlier age() post.
Previous Message Tom Lane 2000-10-12 05:39:11 Re: Postgres Global Variables