Re: BUG #3085: Performance BUG

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #3085: Performance BUG
Дата
Msg-id 21254.1174278182@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: BUG #3085: Performance BUG  ("Alexander Kirpa" <postgres@bilteks.com>)
Список pgsql-bugs
"Alexander Kirpa" <postgres@bilteks.com> writes:
> Sorry for long reply delay.
> Yes. Both previous samples is different,
> but I speak about incorrect planner work - see multiple 'aggregate'.
> Try as alternative next sample:

Well, I'm not sure I want to prevent the thing from flattening
subqueries just because they contain sub-subqueries; nor does
trying both ways sound attractive for typical problems.

What you can do if you need to prevent flattening in a particular case
is insert an "OFFSET 0" as an optimization fence:

regression=# explain analyze
SELECT i4,x1,huge.x1+huge.x1+huge.x1+huge.x1+huge.x1 FROM
(SELECT i4,c1+i4 as x1 FROM (
SELECT i4,(SELECT COUNT(1) FROM t1 AS subselect WHERE
i4<main_table.i4)+i4
AS c1
FROM t1  main_table
) AS external offset 0) AS HUGE
ORDER BY i4-huge.x1+huge.x1+huge.x1+huge.x1+huge.x1;
                                                                 QUERY PLAN
                     

---------------------------------------------------------------------------------------------------------------------------------------------
 Sort  (cost=18416.39..18418.89 rows=999 width=12) (actual time=6896.629..6900.553 rows=999 loops=1)
   Sort Key: ((((((huge.i4 - huge.x1) + huge.x1) + huge.x1) + huge.x1) + huge.x1))
   ->  Subquery Scan huge  (cost=0.00..18366.62 rows=999 width=12) (actual time=4.955..6886.427 rows=999 loops=1)
         ->  Limit  (cost=0.00..18334.15 rows=999 width=4) (actual time=4.889..6862.476 rows=999 loops=1)
               ->  Seq Scan on t1 main_table  (cost=0.00..18334.15 rows=999 width=4) (actual time=4.874..6855.316
rows=999loops=1) 
                     SubPlan
                       ->  Aggregate  (cost=18.32..18.33 rows=1 width=0) (actual time=6.831..6.835 rows=1 loops=999)
                             ->  Seq Scan on t1 subselect  (cost=0.00..17.49 rows=333 width=0) (actual
time=0.075..4.573rows=499 loops=999) 
                                   Filter: (i4 < $0)
 Total runtime: 6906.130 ms
(10 rows)


            regards, tom lane

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

Предыдущее
От: "Bruna Schio"
Дата:
Сообщение: FDO Provider for ODBC
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: BUG #3120: relation "pg_catalog.pg_user"