Re: 8.4 semi-join slows down query performance (EXISTS)

From: Guillaume Smet <guillaume(dot)smet(at)gmail(dot)com>
To: vacuum(at)quantentunnel(dot)de
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: 8.4 semi-join slows down query performance (EXISTS)
Date: 2009-04-21 11:53:01
Message-ID: 1d4e0c10904210453u220bd05amf44bee24eb0e5f70@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Apr 21, 2009 at 11:38 AM, <vacuum(at)quantentunnel(dot)de> wrote:
> I've queries returning tupels of A, with a (sub-)selected constant-expression that indicates whether a referenced tupel exists in B or not. For this issue the EXISTS clause is used.
>
> In past (8.3) the planner resolves this into index-scans using existing foreign-key indices -> fast query (1.5 seconds for comparison). Now (in 8.4) the planner wants "semi-joins". Index-scans are not longer used and my query needs 600 seconds to return.

That worries me a bit for one of our applications too. We use EXISTS
in several places to trick the planner when the statistics are way off
(cross columns/cross tables) and I'm not sure making EXISTS more
clever will help us.

--
Guillaume

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Greg Stark 2009-04-21 11:59:18 Re: Automating Partitions in PostgreSQL - Query on syntax
Previous Message Kedar Potdar 2009-04-21 11:50:23 Automating Partitions in PostgreSQL - Query on syntax