Quando usi "non esiste" o "non in" nella tua query SQL, consenti a Oracle di scegliere percorsi di accesso anti-unione o hash anti-unione.
Spiegazione rapida
Ad esempio, dato unisci tra le tabelle A e B (da A unisci B su A.x =B.x) Oracle preleverà tutti i dati rilevanti dalla tabella A e proverà ad abbinarli alle righe corrispondenti nella tabella B, quindi è strettamente dipendente dalla selettività della tabella Un predicato.
Quando si utilizza l'ottimizzazione anti-join, Oracle può scegliere la tabella con una selettività più elevata e abbinarla all'altra, il che potrebbe comportare un codice molto più veloce.
Non può farlo con join o sottoquery regolari, perché non può presumere che una corrispondenza tra le tabelle A e B sia sufficiente per restituire quella riga.
Suggerimenti correlati: HASH_AJ, MERGE_AJ.
Altro:
Questo sembra un articolo carino e dettagliato sull'argomento.
Qui è un altro articolo più denso.