| 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: | Whole Thread | Raw Message | 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
| 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 |