Re: Data comparison SQL in PG 8.2.9 - Mailing list pgsql-general

From Thomas Markus
Subject Re: Data comparison SQL in PG 8.2.9
Date
Msg-id 496AEBB0.5010004@proventis.net
Whole thread Raw
In response to Data comparison SQL in PG 8.2.9  ("Phoenix Kiula" <phoenix.kiula@gmail.com>)
Responses Re: Data comparison SQL in PG 8.2.9
List pgsql-general
be sure to use correct data types. I suppose psql uses timestamps so

select id from users where modify_date = '2009-01-08' limit 1;

is converted to

select id from users where modify_date = '2009-01-08 00:00:00'::timestamp limit 1;


try

select id from users where modify_date::date = '2009-01-08'::date limit 1;

regards
thomas



Phoenix Kiula schrieb:
> Hi. I have a large table that has a modify_date field in it, which is
> timestamp without time zone.
>
> I used to be able to do queries like these in 8.2.3 --
>
>   select id from users where modify_date = '2009-01-08' limit 1;
>   select id from users where modify_date > '2009-01-08' limit 1;
>
> Suddenly these are returning:
>
>    id
>   ----
>   (0 rows)
>
>   Time: 11.635 ms
>
> I can see through other SQL that there are rows with these dates in
> them! My "\d users" shows these two relevant entries about
> modify_date:
>
>
>                                 Table "public.users"
>           Column         |            Type             |
> Modifiers
>   -----------------------+-----------------------------+------------------------------
>       modify_date           | timestamp without time zone |
>   ....
>   Indexes:
>       "new_idx_modify_date" btree (modify_date) WITH (fillfactor=75)
>
>
> Any ideas why? I ran an explain analyze and this is the output:
>
>
> ******
> =# explain analyze select id from users where modify_date =
> '2009-01-08' limit 1;
>                                                             QUERY PLAN
>
----------------------------------------------------------------------------------------------------------------------------------
>  Limit  (cost=0.00..0.37 rows=1 width=8) (actual time=0.082..0.082
> rows=0 loops=1)
>    ->  Index Scan using new_idx_modify_date on users  (cost=0.00..4.12
> rows=11 width=8) (actual time=0.074..0.074 rows=0 loops=1)
>          Index Cond: (modify_date = '2009-01-08 00:00:00'::timestamp
> without time zone)
>  Total runtime: 19.484 ms
> (4 rows)
>
> Time: 19.940 ms
> ******
>
> Another weird thing is that a query that has ">" a certain
> modify_date, even just yesterday as the date condition, takes a LONG
> time and is almost unusable.
>
> Appreciate any pointers.
>
> Thx!
>
>

--
Thomas Markus

====================================================
proventis GmbH | Zimmerstr. 79-81 | D-10117 Berlin |
Tel +49 (0)30 2936399-22 | Fax -50 | t.markus@proventis.net
-----------------------------------------------------------------
Geschäftsführer: Norman Frischmuth | Sitz: Berlin
Handelsregister: AG Berlin-Charlottenburg, HR 82917
-----------------------------------------------------------------
Blue Ant-webbasiertes Projektmanagement - aktuelle Termine 2008:
http://www.proventis.net/website/live/blueant/veranstaltungen.html
====================================================


Attachment

pgsql-general by date:

Previous
From: "Phoenix Kiula"
Date:
Subject: Data comparison SQL in PG 8.2.9
Next
From: "Phoenix Kiula"
Date:
Subject: Re: Data comparison SQL in PG 8.2.9