| From: | Erik Jones <erik(at)myemma(dot)com> |
|---|---|
| To: | Postgres User <postgres(dot)developer(at)gmail(dot)com> |
| Cc: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
| Subject: | Re: Regex query not using index |
| Date: | 2008-02-20 04:45:41 |
| Message-ID: | F933830E-FDA5-4889-92EB-2301DC49E6DF@myemma.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On Feb 19, 2008, at 9:32 PM, Postgres User wrote:
> I'm running a simple query on 8.2. With this syntax, Explain indicate
> that the index is scanned:
> select * from eod where name = 'AA'
>
> However, when I change the query to use simple regex:
> select * from eod where name ~ 'AA'
>
> now Explain indicates a seq scan:
> Index Scan using equity_eod_symbol_idx on equity_eod (cost=0.00..8.27
> rows=1 width=149)
> Index Cond: ((symbol)::text = 'AA'::text)
>
> Is there any way to 'encourage' Postgres to hit the index when using
> regex? Do I need to create a functional index or something?
> Without the index in play, I really can't use regex on any of my
> larger tables.
You need it to be anchored:
select * from eod where name ~ '^AA';
If you're looking to be able to use indexes for searches within a
string then, for 8.2, you'll need to check out tsearch2.
Erik Jones
DBA | Emma®
erik(at)myemma(dot)com
800.595.4401 or 615.292.5888
615.292.0777 (fax)
Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Postgres User | 2008-02-20 04:58:33 | Re: Regex query not using index |
| Previous Message | Tom Lane | 2008-02-20 04:44:12 | Re: How to make update rapidly? |