Re: *very* slow query to summarize data for a month ...

Поиск
Список
Период
Сортировка
От Greg Stark
Тема Re: *very* slow query to summarize data for a month ...
Дата
Msg-id 878ymmkdb9.fsf@stark.dyndns.tv
обсуждение исходный текст
Ответ на Re: *very* slow query to summarize data for a month ...  (Dennis Bjorklund <db@zigo.dhs.org>)
Ответы Re: *very* slow query to summarize data for a month ...
Список pgsql-performance
Dennis Bjorklund <db@zigo.dhs.org> writes:

> On Mon, 10 Nov 2003, Marc G. Fournier wrote:
>
> >
> > explain analyze SELECT ts.company_id, company_name, SUM(ts.bytes) AS total_traffic
> >     FROM company c, traffic_logs ts
> >    WHERE c.company_id = ts.company_id
> >      AND month_trunc(ts.runtime) = '2003-10-01'
> > GROUP BY company_name,ts.company_id;

So depending on how much work you're willing to do there are some more
dramatic speedups you could get:

Use partial indexes like this (you'll need one for every month):

create index i on traffic_log (company_id)
 where month_trunc(runtime) = '2003-10-01'

then group by company_id only so it can use the index:

select *
  from company
  join (
        select company_id, sum(bytes) as total_traffic
          from traffic_log
         where month_trunc(runtime) = '2003-10-01'
         group by company_id
       ) as x using (company_id)
  order by company_name



Actually you might be able to get the same effect using function indexes like:

create index i on traffic_log (month_trunc(runtime), company_id)


--
greg

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

Предыдущее
От: Rajesh Kumar Mallah
Дата:
Сообщение: Re: Suggestions for benchmarking 7.4RC2 against 7.3
Следующее
От: "Marc G. Fournier"
Дата:
Сообщение: Re: *very* slow query to summarize data for a month ...