From: | Odd Hogstad <odd(dot)hogstad(at)smartm(dot)no> |
---|---|
To: | "Jean-Yves F(dot) Barbier" <12ukwn(at)gmail(dot)com> |
Cc: | "pgsql-novice(at)postgresql(dot)org" <pgsql-novice(at)postgresql(dot)org> |
Subject: | Re: Order-by and indexes |
Date: | 2011-06-29 15:19:00 |
Message-ID: | BANLkTin_sitokWkuaA7Wq0M-+V5kpKH-bQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
2011/6/29 Jean-Yves F. Barbier <12ukwn(at)gmail(dot)com>
> On Wed, 29 Jun 2011 16:42:36 +0200, Odd Hogstad <odd(dot)hogstad(at)smartm(dot)no>
> wrote:
>
> ...
> > By default, B-tree indexes store their entries in ascending order with
> nulls
> > last. This means that a forward scan of an index on column x produces
> output
> > satisfying ORDER BY x (or more verbosely, ORDER BY x ASC NULLS LAST). The
> > index can also be scanned backward, producing output satisfying ORDER BY
> x
> > DESC (or more verbosely, ORDER BY x DESC NULLS FIRST, since NULLS FIRST
> is
> > the default for ORDER BY DESC).
> >
> > Doesn't this mean that when I'm not using the order by clause, and it
> uses a
> > Index Scan, I will always get the latest value in return?
>
> Yes, but you're ordering by column id while you seek value into column fk.
>
> This is very different from the doc you quote: in your case, ordering by id
> returns you all values of fk BUT the ordering of fk is absolutely
> undefined.
And, as I suppose fk stands for Foreign Key, you have many row using same
> values for fk (?)
>
The ordering of the fk doesn't matter to me now. Yes, there might be (and
are) several ones with the same value for this. I just want the latest added
one that matches. And I don't understand why this is not always the first
one matching a forward scan, as new entries are put in front?
> Also I don't
> understand why the order by query is scanning backwards, when the record I
> want is in the other end?
Because id is the primary key (I guess:) and ordering DESC puts id latest
> rows first in list, so limiting select to 1 returns the last one.
Then why is it slow?
From | Date | Subject | |
---|---|---|---|
Next Message | Mike Thomsen | 2011-06-29 15:26:46 | Re: Locking out a user after several failed login attempts |
Previous Message | Vincent Ficet | 2011-06-29 15:11:52 | pg_advisory_locks in a multithreaded application context |