Re: hashed subplan 5000x slower than two sequential operations

Поиск
Список
Период
Сортировка
От Віталій Тимчишин
Тема Re: hashed subplan 5000x slower than two sequential operations
Дата
Msg-id AANLkTik4apwA1Dwbp+PYoz7OOiYY6TDniC+ECqaCwBHt@mail.gmail.com
обсуждение исходный текст
Ответ на Re: hashed subplan 5000x slower than two sequential operations  (masterchief <esimon@theiqgroup.com>)
Список pgsql-performance


2011/1/18 masterchief <esimon@theiqgroup.com>

> Tom Lane wrote:
>
> The only really effective way the planner knows to optimize an
> "IN (sub-SELECT)" is to turn it into a semi-join, which is not possible
> here because of the unrelated OR clause.  You might consider replacing
> this with a UNION of two scans of "contexts".  (And yes, I know it'd be
> nicer if the planner did that for you.)

In moving our application from Oracle to Postgres, we've discovered that a
large number of our reports fall into this category.  If we rewrite them as
a UNION of two scans, it would be quite a big undertaking.  Is there a way
to tell the planner explicitly to use a semi-join (I may not grasp the
concepts here)?  If not, would your advice be to hunker down and rewrite the
queries?

 
 You can try "exists" instead of "in". Postgresql likes exists better. 
Alternatively, you can do something like "set enable_seqscan=false". Note that such set is more like a hammer, so should be avoided. If it is the only thing that helps, it can be set right before calling query and reset to default afterwards.
--

Best regards,
 Vitalii Tymchyshyn

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

Предыдущее
От: Andy Colson
Дата:
Сообщение: Re: Migrating to Postgresql and new hardware
Следующее
От: "Strange, John W"
Дата:
Сообщение: Re: Migrating to Postgresql and new hardware