Re: PLEASE GOD HELP US!
От | Stephan Szabo |
---|---|
Тема | Re: PLEASE GOD HELP US! |
Дата | |
Msg-id | 20041002143450.V11227@megazone.bigpanda.com обсуждение исходный текст |
Ответ на | Re: PLEASE GOD HELP US! ("Scott Marlowe" <smarlowe@qwest.net>) |
Ответы |
Re: PLEASE GOD HELP US!
|
Список | pgsql-admin |
On Sat, 2 Oct 2004, Scott Marlowe wrote: > On Sat, 2004-10-02 at 09:14, Stephan Szabo wrote: > > On Fri, 1 Oct 2004, Scott Marlowe wrote: > > > > > On Fri, 2004-10-01 at 14:26, 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. > > > > > > > > > Wouldn't this work just as well? > > > > > > SELECT * FROM thread_listing AS t ORDER BY t.status > > > DESC,t.lastreply desc LIMIT 25 OFFSET 0 > > > > Probably not, because I don't think he wants the other statuses to have > > special ranking over the others, so a status=4 and status=1 row should be > > sorted by lastreply only effectively. This is the problem of combining > > separate status flags into a single field if you want to be doing these > > sorts of queries. > > > > So would a union give good performance? Just union the first 25 or less > with status=5 with the rest, using a 1 and 0 in each union to order by > first? Hopefully the indexes would then be used. You'd want to use union all I think and you may have to put limits on the unioned arms to get good behavior. I think the expression index would probably work without changing the query (at least for relatively low offsets) at the cost of having an extra index to maintain.
В списке pgsql-admin по дате отправления: