Search Postgresql Archives

Re: How to use index in WHERE int = float

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 5, 2008 at 11:52 AM, Andrus <kobruleht2@xxxxxx> wrote:
> I have table with index
>
> CREATE TABLE firma2.dok(
> ...
>  dokumnr serial NOT NULL,
> ...
>  CONSTRAINT dok_pkey PRIMARY KEY (dokumnr),
> ...
> );
>
> CREATE INDEX dok_dokumnr_idx
>  ON firma2.dok
>  USING btree
>  (dokumnr);
>
> I ran analyze command on it.
>
> explain analyze select * from firma2.dok where  dokumnr='1228137'::float8
>
> "Seq Scan on dok  (cost=0.00..187766.23 rows=6255 width=1145) (actual
> time=43168.460..43176.063 rows=1 loops=1)"
> "  Filter: ((dokumnr)::double precision = 1228137::double precision)"
> "Total runtime: 43176.375 ms"
>
> shows that index is not used and thus query takes very long time.
>
> How to force PostgreSql to speed up without changing query ?

Stop trying to compare exact and inexact types?

You do realize that a float is not an exact number.  What you and I
see as 1228137 might really be, internally, 1228136.9999999999999999 ?
 So it won't get an exact match.  What's wrong with trying to match to
an exact number instead?  I have a feeling you've given us a
simplified example of your problem.  It might help to see the real
problem.

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux