Re: NOT IN doesn't use index? (fwd)

From: Joe Conway <mail(at)joeconway(dot)com>
To: Becky Neville <rebecca(dot)neville(at)yale(dot)edu>
Cc: andrew(at)libertyrms(dot)info, pgsql-performance(at)postgresql(dot)org
Subject: Re: NOT IN doesn't use index? (fwd)
Date: 2003-05-03 19:31:12
Message-ID: 3EB41900.5010407@joeconway.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Becky Neville wrote:
> Well I think you answered my question already, but just in case
> here are the explain results again and the query follows (I warned, it is
> long.) And I did run VACUUM ANALYZE beforehand.

[snipped ugly query with three NOT IN clauses]

Hmmm, no surprise that's slow. How are those three lists of constants
generated? One idea is to recast this as a left join with a FROM clause
subselect, e.g.

select
uabopen_srat_code
from
uabopen u left join
(select '1F' as uabopen_srat_code union all
'1FD' union all
'3A' ...) as ss
on u.uabopen_srat_code = ss.uabopen_srat_code
where ss.uabopen_srat_code is null;

But I'm not sure that will be much quicker. If the list of
uabopen_srat_code you're filtering on comes from one of the other
tables, you might be able to do better -- back to the question above,
how is that list generated? What do the other table look like?

Joe

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Becky Neville 2003-05-03 19:56:53 Re: NOT IN doesn't use index? (fwd)
Previous Message Becky Neville 2003-05-03 19:08:03 Re: NOT IN doesn't use index? (fwd)