Re: scenario with a slow query

Поиск
Список
Период
Сортировка
От Volodymyr Kostyrko
Тема Re: scenario with a slow query
Дата
Msg-id 4F17DA1B.6090408@gmail.com
обсуждение исходный текст
Ответ на Re: scenario with a slow query  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Tom Lane wrote:
> Volodymyr Kostyrko<c.kworr@gmail.com>  writes:
>> Maybe I'm missing something but I have found a case when planner is
>> unoptimal.
>
> The planner knows next to nothing about optimizing FULL JOIN, and
> I would not recommend holding your breath waiting for it to get better
> about that, because there's basically no demand for the work that'd
> be involved.  I'd suggest refactoring this query instead.  A nest of
> full joins seems like a rather unintuitive way to get the result
> anyway ...

That's not about FULL JOIN, that's seems to be about all JOIN's:

select * from (
   select 1 as id
)x natural left join (
   select id, sum(count) as today
   from test_stat
   where date = now()::date group by id
)a natural left join (
   select id, sum(count) as lastday
   from test_stat
   where date = (now() - interval '1 day')::date group by id
)b natural left join (
   select id, sum(count) as week
   from test_stat
   where date between (now() - interval '1 day') and (now() - interval
'7 day')
   group by id
)c natural left join (
   select id, sum(count) as whole
   from test_stat
   where date <> now()::date
   group by id
)d;

This query exhibits the same seq scan.

By refactoring did you mean something like this:

select
   (select sum(count) from test_stat
     where date = now()::date and id = 1
     group by id) as today,
   ( select sum (count) from test_stat
     where date = (now() - interval '1 day')::date and id = 1
     group by id) as lastday,
   ( select sum(count) from test_stat
     where date between (now() - interval '1 day')
       and (now() - interval '7 day') and id = 1
     group by id) as week,
   (select sum(count) from test_stat
     where date <> now()::date and id = 1
     group by id) as whole;

This one works much better requiring mostly no planner involvment...
Yielding the same result though.

--
Sphinx of black quartz judge my vow.

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

Предыдущее
От: Koichi Suzuki
Дата:
Сообщение: Re: Does Version 9.1 Streaming Replication Supports Multi-Master?
Следующее
От: Florian Weimer
Дата:
Сообщение: Re: On duplicate ignore