Re: Order by behaviour

From: Guido Neitzer <guido(dot)neitzer(at)pharmaline(dot)de>
To: Carlos Benkendorf <carlosbenkendorf(at)yahoo(dot)com(dot)br>
Cc: postgres performance list <pgsql-performance(at)postgresql(dot)org>
Subject: Re: Order by behaviour
Date: 2005-12-23 13:34:20
Message-ID: 55DD6E49-BC80-443D-9F6E-573B6CEE961D@pharmaline.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On 23.12.2005, at 13:34 Uhr, Carlos Benkendorf wrote:

> For some implementation reason in 8.0.3 the query is returning the
> rows in the correct order even without the order by but in 8.1.1
> probably the implementation changed and the rows are not returning
> in the correct order.

You will never be sure to get rows in a specific order without an
"order by".

I don't know why PG is faster without ordering, perhaps others can
help with that so you don't need a workaround like this:

If you can't force PostgreSQL to perform better on the ordered query,
what about retrieving only the primary keys for the rows you want
unordered in a subquery and using an "where primaryKey in (...) order
by ..." statement with ordering the five rows?

Like this:

select * from mytable where pk in (select pk from mytable where ...)
order by ...;

I don't know whether the query optimizer will flatten this query, but
you can try it.

cug

--
PharmaLine Essen, GERMANY and
Big Nerd Ranch Europe - PostgreSQL Training, Feb. 2006, Rome, Italy
http://www.bignerdranch.com/classes/postgresql.shtml

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Kresimir Tonkovic 2005-12-23 14:31:15 Re: Order by behaviour
Previous Message Carlos Benkendorf 2005-12-23 13:32:35 Re: Order by behaviour