| From: | Arjen van der Meijden <acm(at)tweakers(dot)net> |
|---|---|
| To: | pgsql-sql(at)postgresql(dot)org |
| Subject: | Re: calculated expressions and index use |
| Date: | 2003-01-30 16:13:40 |
| Message-ID: | b1biv3$l4s$1@news.tudelft.nl |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
A very dirty work around could be:
select * from foo where created+at >= (select now() - '1 hour'::interval);
Or perhaps this already works:
select * from foo where created+at >= (now() - '1 hour'::interval);
Pavel Hlavnicka wrote:
> Hi all,
>
> I use simple sql statement like this
>
> select * from foo
> where created_at >= 'now'::timestamp - '1 hour'::interval;
>
> My table is indexed on created_at field. The query above doesn't use it,
> but if I use
>
> select * from foo where created_at >= 'now'
>
> the index is used.
>
> It looks like if the engine finds some expression to be evaluated it
> gets rid of any index use (due the possible dependency?).
>
> Is it possible to do something to 'precompute' some value in the query
> condition, so planner understand is as a constant value?
>
> (... and I've got some reason NOT to use a parameter in my Perl DBI code...)
>
> Maybe my conclusions are wrong, of course.
>
> Thank you very much in advance
>
> Pavel
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2003-01-30 16:51:25 | Re: calculated expressions and index use |
| Previous Message | Achilleus Mantzios | 2003-01-30 16:00:07 | Re: Delete 1 Record of 2 Duplicate Records |