Re: String searching

From: Jonathan Vanasco <postgres(at)2xlp(dot)com>
To: PostgreSQL General <pgsql-general(at)postgresql(dot)org>
Subject: Re: String searching
Date: 2014-11-18 16:01:45
Message-ID: 16B6D4DC-8B25-4B80-8C25-B759308BD04C@2xlp.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On Nov 18, 2014, at 7:38 AM, Albe Laurenz wrote:
>
> That index wouldn't help with the query at all.
>
> If you really need a full substring search (i.e., you want to find
> "howardjohnson"), the only thing that could help are trigram indexes.

I stand corrected.

I ran a sample query on my test database of 100k names

using a function index `lower(name)`

this runs an index scan in .2ms
... where lower(name) = lower('bob');

but this runs a sequential scan in 90ms:
... where lower(name) like lower('%bob%');

I didn't know that 'like' doesn't run on indexes!

using a trigaram index,

this runs a bitmap index on the trigram, then a bitmap heap on the table. 13ms.
...where name ilike '%bob%';

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Robert DiFalco 2014-11-18 16:49:37 Re: String searching
Previous Message Andy Colson 2014-11-18 14:37:09 Re: String searching