Re: Preventing query from hogging server
От | Rosser Schwarz |
---|---|
Тема | Re: Preventing query from hogging server |
Дата | |
Msg-id | 37d451f7050324112414d7c9b5@mail.gmail.com обсуждение исходный текст |
Ответ на | Preventing query from hogging server ("Matthew Nuzum" <matt.followers@gmail.com>) |
Список | pgsql-performance |
while you weren't looking, Matthew Nuzum wrote: > select accountid, min(atime) as atime, sessionid from usage_access > group by accountid,sessionid; Try something along the lines of: select ua.accountid , (select atime from usage_access where sessionid = ua.sessionid and accountid = ua.accountid order by atime asc limit 1 ) as atime , ua.sessionid from usage_access ua group by accountid , sessionid min() and max() currently do table scans, which, on large tables, or even moderately sized tables with large numbers of accounts/sessions, can add up. You'll need to replace asc with desc in the subquery for the max() version. This form cheats a bit and uses the index to find the highest and lowest values, provided you've created the appropriate indices. This is, IIRC, in the FAQ. /rls -- :wq
В списке pgsql-performance по дате отправления: