Creating an index and using lower(column) does not change the explain
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
It says that index is not used if the search string begins with a % symbol.
On Mon, 24 Jan 2005 20:58:54 +1100, Russell Smith <mr-russ(at)pws(dot)com(dot)au> 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.
> Russell Smith
In response to
pgsql-performance by date
|Next:||From: Russell Smith||Date: 2005-01-25 08:49:12|
|Subject: Re: How to boost performance of ilike queries ?|
|Previous:||From: andrew||Date: 2005-01-25 06:18:11|
|Subject: Re: poor performance of db?|