| From: | Michael Fuhr <mike(at)fuhr(dot)org> |
|---|---|
| To: | "Jim C(dot) Nasby" <jnasby(at)pervasive(dot)com> |
| Cc: | Mark <sendmailtomark(at)yahoo(dot)com>, pgsql-general(at)postgresql(dot)org |
| Subject: | Re: query for a time interval |
| Date: | 2005-12-23 06:05:10 |
| Message-ID: | 20051223060510.GA71361@winnie.fuhr.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On Thu, Dec 22, 2005 at 09:47:11AM -0600, Jim C. Nasby wrote:
> On Wed, Dec 21, 2005 at 11:52:56AM -0800, Mark wrote:
> > SELECT id
> > FROM mq
> > WHERE now - start_date > time_to_live;
>
> The problem is you can't use an index on this, because you'd need to
> index on (now() - start_date), which obviously wouldn't work. Instead,
> re-write the WHERE as:
>
> WHERE start_date < now() - time_to_live
Unless I'm missing something that wouldn't use an index either,
because the planner wouldn't know what value to compare start_date
against without hitting each row to find that row's time_to_live.
But something like this should be able to use an expression index
on (start_date + time_to_live):
WHERE start_date + time_to_live < now()
--
Michael Fuhr
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Pandurangan R S | 2005-12-23 06:13:26 | Re: problems with currval and rollback |
| Previous Message | Bruce Momjian | 2005-12-23 01:32:48 | Re: problems with currval and rollback |