From: | "Ilker Egilmez" <ilker(at)gate5(dot)de> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | index on numbers not honoured |
Date: | 2001-11-12 19:59:32 |
Message-ID: | 9sp9tj$il4$1@news.tht.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
hi,
an index on a table column of any number type only gets honoured if you
query it like a string, e.g.
create table t1 ( n int2 ) ;
create index t1n on t1 (n) ;
explain select * from t1 where n = 1 ;
-- Seq Scan on t1 (cost=0.00..22.50 rows=10 width=2)
explain select * from t1 where n = '1' ;
-- Index Scan using t1n on t1 (cost=0.00..8.14 rows=10 width=2)
first i thought this might be an psql client error and tried the same via
jdbc, and look, there it happens again. if i create a PreparedStatemnt and
bind the INT or LONG value with setLong (1,x) the index won't be used in the
select statement. if i bind the value with a setString (1,x+"") command,
then the index is honored correctly. I tested the code against postgres
7.1.3 as well as 7.0.2. this means that i would have to change all my java
code from setLong to setString in order to speed up my apps every time i
query a number. quite ugly!
ilker -)
--
--
gate5 AG
schoenhauser allee 62
10437 berlin
fon + 49 30 446 76 0
fax + 49 30 446 76 555
http://www.gate5.de/ | ilker(at)gate5(dot)de
From | Date | Subject | |
---|---|---|---|
Next Message | J Smith | 2001-11-12 20:25:14 | Re: Sourceforge on Oracle? |
Previous Message | Orion | 2001-11-12 19:58:27 | Re: What's the fastest way to do this? |