Когато използвате „не съществува“ или „не е в“ във вашата SQL заявка, вие позволявате на Oracle да избере пътища за достъп против сливане или хеширане на анти-свързване.
Бързо обяснение
Например, дадено съединение между таблица A и B (от A join B към A.x =B.x) Oracle ще извлече всички съответни данни от таблица A и ще се опита да ги съпостави със съответните редове в таблица B, така че е строго зависимо от селективността на таблицата Предикат.
Когато използва оптимизация против присъединяване, Oracle може да избере таблицата с по-висока селективност и да я съпостави с другата, което може да доведе до много по-бърз код.
Не може да направи това с редовно свързване или подзаявка, защото не може да приеме, че едно съвпадение между таблици A и B е достатъчно, за да върне този ред.
Свързани съвети: HASH_AJ, MERGE_AJ.
Още:
Това изглежда хубава и подробна статия по темата.
Тук е друга, по-прилична статия.