Re: Why is this query running slowly? - Mailing list pgsql-general

From Tom Lane
Subject Re: Why is this query running slowly?
Date
Msg-id 10696.1316096777@sss.pgh.pa.us
Whole thread Raw
In response to Re: Why is this query running slowly?  (Yang Zhang <yanghatespam@gmail.com>)
Responses Re: Why is this query running slowly?
List pgsql-general
Yang Zhang <yanghatespam@gmail.com> writes:
> On Thu, Sep 15, 2011 at 1:22 AM, Tomas Vondra <tv@fuzzy.cz> wrote:
>> [ use a left join instead of NOT IN ]

> This worked great, thank you.  Too bad the planner isn't smart enough
> to do this yet!

It never will be, because they're not equivalent queries.  NOT IN has
different (and very hard-to-optimize) behavior in the face of NULLs in
the right-hand table.

The moral of the story is avoid NOT IN.  You could use NOT EXISTS,
which is less of a notational change than recasting as a left join.

            regards, tom lane

pgsql-general by date:

Previous
From: Harald Fuchs
Date:
Subject: Re: Bit datatype performance?
Next
From: Harald Fuchs
Date:
Subject: PostgreSQL 9.1.0 bug?