Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Avoid a subselect "where not equal to"?
Charles Hooper wrote:
> Martin T. wrote:
> > Ed Prochak wrote:
> > > Martin T. wrote:
> > > > andrew.fabbro_at_gmail.com wrote:
> > > > > (snipped)
> > > > >
> > > > (more snipped)
> >
> > I compared the two SELECTs though - the one with the NOT IN clause
> > seems to generate the nicer query plan with my 9i2 CBO than the one
> > with the outer join (of course it would depend on real data etc.)
> >
> > I would stick with the OPs query until someone prooves a better
> > solution (i.e. faster for real data or more readable).
> >
>
>
Thanks for sharing this info!
I'm a bit confused here though. I would have thought the NOT IN
subquery would be unnested, so only be executed once.
But looking into the docs it says ...
"(...)the optimizer automatically unnests some(...) Uncorrelated IN
subqueries (...)"
But then I read on and it says:
"(...)extended subquery unnesting(...) You can unnest an uncorrelated
NOT IN subquery by specifying the HASH_AJ or MERGE_AJ hint in the
subquery.(...)"
(9i, SQL Reference p8-14f)
Seems it doesn't do it with NOT IN, except if I explicitly tell it to. I guess we live and learn :)
best,
Martin
Received on Wed Aug 02 2006 - 01:20:44 CDT
![]() |
![]() |