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
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) |