> explain select * from a where x=3;
PostgreSQL is treating 3 as an int4 (integer) type, whereas x is an int2
(smallint) type. Try casting the constant as a smallint and it should use
the index:
explain select * from a where x=3::smallint;
Greg
----- Original Message -----
From: "Dmitry Tkach" <dmitry@openratings.com>
To: <pgsql-general@postgresql.org.pgsql-sql@postgresql.org>
Sent: Friday, March 15, 2002 2:07 PM
Subject: [GENERAL] Why is it not using an index?
> This must be really simple, but I just can't get it :-(
> I have a table (a) with a single column (x):
>
> Table "a"
> Attribute | Type | Modifier
> -----------+----------+----------
> x | smallint |
> Index: a_idx
>
>
> Index "a_idx"
> Attribute | Type
> -----------+----------
> x | smallint
> btree
>
> The table has 10000000 rows....
>
> Now, how come, when I do:
>
> explain select * from a where x=3;
>
> it says:
>
> Seq Scan on bset (cost=100000000.00..100175934.05 rows=303 width=2)
>
> Why is it not using a_idx???
>
> I even tried set enable_seqscan to off - makes no difference :-(
>
> Any idea what is going on?
>
> Thanks a lot!
>
> Dima
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>