Creating an index and using lower(column) does not change the explain
plan estimates.
It seems that it is not using index for like or ilike queries
irrespective of whether it have a pattern matching character in it or
not. (using PostgreSQL 7.3.3)

On googling I found this thread 

http://archives.postgresql.org/pgsql-sql/2004-11/msg00285.php

It says that index is not used if the search string begins with a % symbol.

rgds
Antony Paul

On Mon, 24 Jan 2005 20:58:54 +1100, Russell Smith <[EMAIL PROTECTED]> wrote:
> On Mon, 24 Jan 2005 08:18 pm, Antony Paul wrote:
> > Hi,
> >     I have a query which is executed using ilike. The query values are
> > received from user and it is executed using PreparedStatement.
> > Currently all queries are executed as it is using iilike irrespective
> > of whether it have a pattern matching character or not. Can using =
> > instead of ilike boot performance ?.  If creating index can help then
> > how the index should be created on lower case or uppercase ?.
> > 
> It depends on the type of queries you are doing.
> 
> changing it to something like  lower(column) like lower('text%'), and
> creating an index on lower(column) will give you much better performance.
> 
> If you have % in the middle of the query, it will still be slow, but I assume 
> that is not
> the general case.
> 
> I am not sure what the effect of it being prepared will be, however I've had 
> much success
> with the method above without the queries being prepared.  Others may be able 
> to offer advice
> about if prepare will effect it.
> 
> Regards
> 
> Russell Smith
>

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to