From: | Martijn van Oosterhout <kleptog(at)svana(dot)org> |
---|---|
To: | S Dawalt <shane(dot)dawalt(at)wright(dot)edu> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Creating tons of tables to support a query |
Date: | 2002-09-09 23:34:19 |
Message-ID: | 20020910093419.A15034@svana.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Mon, Sep 09, 2002 at 11:13:01AM -0400, S Dawalt wrote:
>
> Stephan Szabo said:
>
> >
> > On Sun, 8 Sep 2002, Jan Ploski wrote:
> >
> > > I am in particular wondering, why an index on message(sectionID,
> dateSent)
> > > does not make these queries comparably fast:
> > >
> > > select msgnum from message where
> > > sectionID = ? and
> > > dateSent > ?
> > > order by dateSent
> > > limit 1;
> >
> > I don't think that'll use an index on (sectionID, dateSent) for the sort
> > step. I think an index on (dateSent,sectionID) might be, however.
> >
>
> I know I've read this before on the list (probably several times). But
> either my skull is too thick or the topic too abstract; why is no index used
> for (sectionID, dateSent) but (dateSent, sectionID) does? They are the same
> columns, but just reversed. I don't see why that would make a difference.
> Is there some rule-of-thumb for determining when an index is used and when
> it isn't rather than trail and error using EXPLAIN?
Hmm, take out the order by. How long does it take then? How about trying:
select * from (select msgnum, datesent
from message where
sectionID = ? and
dateSent > ?) order by datesent limit 1;
maybe that will force the plan you want.
--
Martijn van Oosterhout <kleptog(at)svana(dot)org> http://svana.org/kleptog/
> There are 10 kinds of people in the world, those that can do binary
> arithmetic and those that can't.
From | Date | Subject | |
---|---|---|---|
Next Message | Nigel J. Andrews | 2002-09-09 23:35:30 | Re: Surprise :-( |
Previous Message | Darren Ferguson | 2002-09-09 22:15:57 | Re: describe table query? |