Re: EXISTS vs IN vs OUTER JOINS

From: Joe Conway <mail(at)joeconway(dot)com>
To: Josh Berkus <josh(at)agliodbs(dot)com>
Cc: Tomasz Myrta <jasiek(at)klaster(dot)net>, PgSQL Performance ML <pgsql-performance(at)postgresql(dot)org>
Subject: Re: EXISTS vs IN vs OUTER JOINS
Date: 2002-12-19 17:43:24
Message-ID: 3E02053C.7070305@joeconway.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Josh Berkus wrote:
> where I have rarely seen a difference of more than 3:1. As I
> understand it, this is because NOT EXISTS can use optimized join
> algorithms to locate matching rows, whereas NOT IN must compare each
> row against every possible matching value in the subselect.
>
> It also makes a difference whether or not the referenced field(s) in
> the subselect is indexed. EXISTS will often use an index to compare
> the values in the master query to the sub-query. As far as I know, IN
> can use an index to retrieve the subquery values, but not to sort or
> compare them after they have been retreived into memory.

I wonder if "[NOT] IN (subselect)" could be improved with a hash table in
similar fashion to the hash aggregate solution Tom recently implemented?

Joe

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Josh Berkus 2002-12-19 19:02:39 Re: EXISTS vs IN vs OUTER JOINS
Previous Message jasiek 2002-12-19 17:27:33 Re: EXISTS vs IN vs OUTER JOINS