Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Откуда такой план выполнения? / 3 сообщений из 3, страница 1 из 1
02.12.2005, 10:48
    #33413005
Откуда такой план выполнения?
На одной таблице делаю план выполнения запросов. Первый - с условием, второй - без условия. Однако первый почему-то выполняется быстрее. Вопрос - почему?:
Код: plaintext
1.
2.
3.
4.
5.
6.
=>explain select client_id,ip_to,place,t_t,sum(bytes) from inet_trafic_today where date_part('day',tm)= 2  group by client_id,ip_to,place,t_t;
                                  QUERY PLAN
-------------------------------------------------------------------------------
 HashAggregate  (cost= 22944 . 89 .. 22955 . 88  rows= 4396  width= 25 )
   ->  Seq Scan on inet_trafic_today  (cost= 0 . 00 .. 22889 . 94  rows= 4396  width= 25 )
         Filter: (date_part('day'::text, tm) =  2 ::double precision)
(ЪБРЙУЕК:  3 )
Код: plaintext
1.
2.
3.
4.
5.
6.
=> explain select client_id,ip_to,place,t_t,sum(bytes) from inet_trafic_today  group by client_id,ip_to,place,t_t;                                                      QUERY PLAN
---------------------------------------------------------------------------------------
 GroupAggregate  (cost= 116464 . 54 .. 131849 . 30  rows= 879129  width= 25 )
   ->  Sort  (cost= 116464 . 54 .. 118662 . 37  rows= 879129  width= 25 )
         Sort Key: client_id, ip_to, place, t_t
         ->  Seq Scan on inet_trafic_today  (cost= 0 . 00 .. 18494 . 29  rows= 879129  width= 25 )
(ЪБРЙУЕК:  4 )
Почему в первом случае нет сортировки?
...
Рейтинг: 0 / 0
02.12.2005, 11:10
    #33413098
Paul Chabinsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Откуда такой план выполнения?
В первом случае сортировка по ключу (client_id, ip_to, place, t_t) на взгляд постгреса нецелесообразна, т.к. роукаунт значительно меньше из-за where date_part('day',tm)=2... а раз нет сортировки значит делается Хэшагрегат, HashAggregate (cost=22944.89..22955.88 rows=4396 width=25)

Во втором случае используеца сортировка по индексу, по этому после нее делается ГрупАгрегат...

Если вы допишете в первый запрос перед групбаем ORDER BY (client_id, ip_to, place, t_t) то будет то же ГрупАгрегат после сортировки...
...
Рейтинг: 0 / 0
02.12.2005, 11:46
    #33413202
Откуда такой план выполнения?
точно, с order by GroupAggregate использует... всё ясно теперь, спасибо
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Откуда такой план выполнения? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]