Re: PLEASE GOD HELP US!

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: Michael Paesold <mpaesold(at)gmx(dot)at>
Cc: Shane|SkinnyCorp <shanew(at)skinnycorp(dot)com>, PgSQL ADMIN <pgsql-admin(at)postgresql(dot)org>
Subject: Re: PLEASE GOD HELP US!
Date: 2004-10-01 21:42:58
Message-ID: 20041001144100.E67126@megazone.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin


On Fri, 1 Oct 2004, Michael Paesold wrote:

> Shane | SkinnyCorp wrote:
>
> > Okay, just so no one posts about this again...
> >
> > the 'ORDER BY t.status=5,lastreply' clause is meant to float the threads
> > with a status of '5' to the top of the list... it is NOT meant to only
> > grab
> > threads where the status = 5. Oh and believe me, when I take this out of
> > the query, it CERTAINLY doesn't add any more than possible 1/4 of a
> > millesecond to the speed of the SELECT statement.
> >
> > :/
>
> Perhaps I missed it, but you did not yet send the output of the explain of
> this query, did you?
>
> Could you please do:
>
> EXPLAIN SELECT * FROM thread_listing AS t ORDER BY t.status=5 DESC,
> t.lastreply DESC LIMIT 25 OFFSET 0;
>
> EXPLAIN SELECT * FROM thread_listing AS t WHERE t.status=5 ORDER BY
> t.lastreply DESC LIMIT 25 OFFSET 0;
>
> EXPLAIN SELECT * FROM thread_listing AS t ORDER BY t.lastreply DESC LIMIT 25
> OFFSET 0;
>
> (and post the results here)
>
> The first one will certainly do a sequential scan, the last one will use an
> index if available. For the second you will need a partial index on
> lastreply with a where clause WHERE status=5, I believe. So a solution would

Actually, I think he'd want an expression index on ((status=5),lastreply).
In simple tests (admittedly on 8.0b3) it looks like such an index can be
used rather than a separate sort step.

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Steve Crawford 2004-10-01 21:47:01 Re: PLEASE GOD HELP US!
Previous Message Igor Maciel Macaubas 2004-10-01 21:28:57 Re: Does PostgreSQL Stores its database in multiple disks?