Re: PLEASE GOD HELP US!

Поиск
Список
Период
Сортировка
От Michael Paesold
Тема Re: PLEASE GOD HELP US!
Дата
Msg-id 045401c4a7fc$c9433a80$ad01a8c0@zaphod
обсуждение исходный текст
Ответ на Re: PLEASE GOD HELP US!  ("Shane | SkinnyCorp" <shanew@skinnycorp.com>)
Ответы Re: PLEASE GOD HELP US!
Список pgsql-admin
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
perhaps be to use two queries, one with WHERE t.status=5, another without.
Make both use an index. Then combine them in your application. Of course
this can only work if you do not need an offset other then 0.

Also, did you check that your system does not swap (using vmstat)?

Best Regards,
Michael Paesold


В списке pgsql-admin по дате отправления:

Предыдущее
От: Heather Johnson
Дата:
Сообщение: Re: Does PostgreSQL Stores its database in multiple disks?
Следующее
От: "Igor Maciel Macaubas"
Дата:
Сообщение: Re: Does PostgreSQL Stores its database in multiple disks?