From: | carex(at)skynet(dot)be (carex) |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | select using regexp does not use indexscan |
Date: | 2004-11-09 20:02:26 |
Message-ID: | 3a0a211c.0411091202.223f1c02@posting.google.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
This is what I get with postgres-7.3 (from Redhat Enterprise !!)
Here below a select with a regexp
ansroc=# explain select * from s12hwdb where host~'^tna2582t';
QUERY PLAN
-------------------------------------------------------------
Seq Scan on s12hwdb (cost=0.00..30660.35 rows=1 width=128)
Filter: (host ~ '^tna2582t'::text)
(2 rows)
Here below the same select without regexp
ansroc=# explain select * from s12hwdb where host='tna2582t';
QUERY PLAN
---------------------------------------------------------------------------------------------
Index Scan using s12hwdb_host_rit_idx on s12hwdb
(cost=0.00..18123.85 rows=4828 width=128)
Index Cond: (host = 'tna2582t'::bpchar)
(2 rows)
ansroc=#
As you can see, the index is not use when a regexp is used in the
select.
I did the same test with postgres-7.3.6 & postgres-7.4.6 (compiled
from sources) but the results where the same.
(index is NEVER used with regexp on a RHE)
I even tried with a 'set enable_seqscan to off', but the result is the
same.
BUT, with Debian (woody & sarge) everything is ok.
(has always been with debian-:)
I did try with a postgres debian pachage, and also with a postgres
compiled from source, and even with different version (7.3.4, 7.4.6).
Index is always used !
ansroc=# explain SELECT * FROM s12hwdb where host~'^tna2582t';
QUERY PLAN
--------------------------------------------------------------------------------------
Index Scan using s12hwdb_host_rit_idx on s12hwdb (cost=0.00..4.41
rows=1 width=128)
Index Cond: ((host >= 'tna2582t'::bpchar) AND (host <
'tna2582u'::bpchar))
Filter: (host ~ '^tna2582t'::text)
(3 rows)
ansroc=# explain SELECT * FROM s12hwdb where host='tna2582t';
QUERY PLAN
----------------------------------------------------------------------------------------
Index Scan using s12hwdb_host_rit_idx on s12hwdb (cost=0.00..76.02
rows=17 width=128)
Index Cond: (host = 'tna2582t'::bpchar)
(2 rows)
ansroc=#
And it works also perfectly with Gentoo.
So,is this a typical "Redhat Enterprise" problem ?
Or do I overlook something ??
Has someone experienced the same problem ??
Thanks.
carex.
From | Date | Subject | |
---|---|---|---|
Next Message | andre.toscano | 2004-11-09 20:40:53 | Aggregate like AVG() with Money Data Type |
Previous Message | Giulio Orsero | 2004-11-09 19:55:03 | Re: Drop all indexes of a table w/o knowing the index names |