From: | Marti Raudsepp <marti(at)juffo(dot)org> |
---|---|
To: | Edson Carlos Ericksson Richter <richter(at)simkorp(dot)com(dot)br> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Does postgresql 9.0.4 use index on PREFIX%SUFFIX queries? |
Date: | 2011-09-26 20:41:36 |
Message-ID: | CABRT9RDrQu4A_D0GRP6XFR330Yg_Kk6d7kvSMiiXPT=4M=9ntw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Mon, Sep 26, 2011 at 15:16, Edson Carlos Ericksson Richter
<richter(at)simkorp(dot)com(dot)br> wrote:
> select * from notafiscal where numeroctc like ‘POA%34345’;
>
> Prefix is normally 3 characters, suffix varyies.
>
> Is Postgresql 9.0.4 able to use an BTREE index on notafiscal.numeroctc to execute this query?
As mentioned by other posters, you should use a btree index with
text_pattern_ops opclass to speed up this query.
For queries like these, it's often faster to match the text in
*reverse*. You can create two indexes like this:
create index on foobar (txt text_pattern_ops);
create index on foobar (reverse(txt) text_pattern_ops);
And then write your queries like this:
SELECT * FROM foobar
WHERE txt like 'POA%34345'
AND reverse(txt) like reverse('POA%34345');
PostgreSQL will automatically choose one or both indexes for executing
this query.
Regards,
Marti
From | Date | Subject | |
---|---|---|---|
Next Message | Edson Carlos Ericksson Richter | 2011-09-26 22:43:50 | RES: Does postgresql 9.0.4 use index on PREFIX%SUFFIX queries? |
Previous Message | Marti Raudsepp | 2011-09-26 20:22:17 | Re: Batching up data into groups of n rows |