Re: Index on substring? - Mailing list pgsql-general

From Tom Lane
Subject Re: Index on substring?
Date
Msg-id 25309.971329759@sss.pgh.pa.us
Whole thread Raw
In response to Index on substring?  (Jeff Eckermann <jeckermann@verio.net>)
Responses Re: Index on substring?  ("Roderick A. Anderson" <raanders@altoplanos.net>)
List pgsql-general
Jeff Eckermann <jeckermann@verio.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

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Postgres Global Variables
Next
From: Tom Lane
Date:
Subject: Re: Comments on earlier age() post.