Re: Query Optimizer Failure / Possible Bug

Поиск
Список
Период
Сортировка
От Josh Berkus
Тема Re: Query Optimizer Failure / Possible Bug
Дата
Msg-id 200503281151.17344.josh@agliodbs.com
обсуждение исходный текст
Ответ на Query Optimizer Failure / Possible Bug  (Hannes Dorbath <light@theendofthetunnel.de>)
Ответы Re: Query Optimizer Failure / Possible Bug  (Hannes Dorbath <light@theendofthetunnel.de>)
Список pgsql-performance
Hannes,

> The query and the corresponding EXPLAIN is at
>
> http://hannes.imos.net/query.txt

The problem is that you're using a complex corellated sub-select in the SELECT
clause:

    SELECT
      d.delivery_id,
      da.article_no,
      da.amount,
      (
          SELECT
            COUNT(*)
          FROM
            serials s
            INNER JOIN rma_ticket_serials rts ON (
                s.serial_id = rts.serial_id
            )
          WHERE
            s.article_no  = da.article_no AND
            s.delivery_id = d.delivery_id AND
            rts.replace   = FALSE
      ) AS replaced_serials

This means that the planner pretty much has to iterate over the subquery,
running it once for each row in the result set.   If you want the optimizer
to use a JOIN structure instead, put the subselect in the FROM clause.

--
--Josh

Josh Berkus
Aglio Database Solutions
San Francisco

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

Предыдущее
От: Simon Riggs
Дата:
Сообщение: Re: Delete query takes exorbitant amount of time
Следующее
От: Greg Stark
Дата:
Сообщение: Re: which dual-CPU hardware/OS is fastest for PostgreSQL?