Re: like & optimization
| От | Torsten Förtsch |
|---|---|
| Тема | Re: like & optimization |
| Дата | |
| Msg-id | 5259BEE6.2060500@gmx.net обсуждение исходный текст |
| Ответ на | like & optimization (Scott Ribe <scott_ribe@elevated-dev.com>) |
| Ответы |
Re: like & optimization
|
| Список | pgsql-general |
On 12/10/13 20:08, Scott Ribe wrote:
> select * from test where tz >= start and tz < end and colb like '%foobar%'
I think you can use an index only for wildcard expressions that are
anchored at the beginning. So,
select * from test where tz >= start and tz < end
and colb like 'foobar%'
can use an index on colb.
You could perhaps
select * from test where tz >= start and tz < end
and colb like 'foobar%'
union all
select * from test where tz >= start and tz < end
and reverse(colb) like 'raboof%'
Then you need 2 indexes, one on colb the other on reverse(colb).
You can have duplicates in the result set if the table contains rows
where colb='foobar'. If that's a problem, use union distinct.
Alternatively, if foobar is kind of a word (with boundaries), you could
consider full-text search.
Just my 2¢,
Torsten
В списке pgsql-general по дате отправления: