Обсуждение: index is not using
I have created a index
create index leadaddress_phone_idx on leadaddress(regexp_replace((phone)::text, '[^0-9]*'::text, ''::text, 'g'::text));
But the index is not using.
explain select * from leadaddress where regexp_replace(phone,'[^0-9]*','','g') like '%2159438606';
QUERY PLAN
--------------------------------------------------------------------------------------------------------
Seq Scan on leadaddress (cost=100000000.00..100009699.81 rows=1 width=97)
Filter: (regexp_replace((phone)::text, '[^0-9]*'::text, ''::text, 'g'::text) ~~ '%2159438606'::text)
QUERY PLAN
--------------------------------------------------------------------------------------------------------
Seq Scan on leadaddress (cost=100000000.00..100009699.81 rows=1 width=97)
Filter: (regexp_replace((phone)::text, '[^0-9]*'::text, ''::text, 'g'::text) ~~ '%2159438606'::text)
Could anyone please tell me why? I analyzed the table after index creation.
Le 09/02/2010 08:43, AI Rumman a écrit : > I have created a index > create index leadaddress_phone_idx on > leadaddress(regexp_replace((phone)::text, '[^0-9]*'::text, ''::text, > 'g'::text)); > > But the index is not using. > > explain select * from leadaddress where > regexp_replace(phone,'[^0-9]*','','g') like '%2159438606'; > QUERY > PLAN > -------------------------------------------------------------------------------------------------------- > Seq Scan on leadaddress (cost=100000000.00..100009699.81 rows=1 width=97) > Filter: (regexp_replace((phone)::text, '[^0-9]*'::text, ''::text, > 'g'::text) ~~ '%2159438606'::text) > > Could anyone please tell me why? I analyzed the table after index creation. > The index cannot be used if the filter is '%something' or '%somethingelse%'. I can only be used for 'this%'. -- Guillaume. http://www.postgresqlfr.org http://dalibo.com
I just answered this less than an hour ago... And please don't cross post to multiple mailing lists. On Tue, Feb 9, 2010 at 12:43 AM, AI Rumman <rummandba@gmail.com> wrote: > I have created a index > create index leadaddress_phone_idx on > leadaddress(regexp_replace((phone)::text, '[^0-9]*'::text, ''::text, > 'g'::text)); > > But the index is not using. > > explain select * from leadaddress where > regexp_replace(phone,'[^0-9]*','','g') like '%2159438606'; > QUERY > PLAN > -------------------------------------------------------------------------------------------------------- > Seq Scan on leadaddress (cost=100000000.00..100009699.81 rows=1 width=97) > Filter: (regexp_replace((phone)::text, '[^0-9]*'::text, ''::text, > 'g'::text) ~~ '%2159438606'::text) > > Could anyone please tell me why? I analyzed the table after index creation. > -- When fascism comes to America, it will be intolerance sold as diversity.