NESTED LOOPS (ANTI)

Description

Performs a nested loops anti join between two row sources

Versions

This operation was introduced in Oracle 9.0.1

This operation is implemented in the following versions

9.0.1
9.2.0
10.1.0
10.2.0

Example

Note that the columns involved in the anti-join must both have NOT NULL constraints. Other permutations result in FILTER execution plans

Unlike HASH JOIN (ANTI) and MERGE JOIN (ANTI) at least one of the tables must be analyzed

This example was developed using Oracle 9.2.0.1 on Windows 2000

This example requires the following table definition

    CREATE TABLE t1 (c1 NUMBER NOT NULL,c2 NUMBER);
    CREATE TABLE t2 (c1 NUMBER NOT NULL,c2 NUMBER);

In Oracle 9.2 the table must also be analyzed

    ANALYZE TABLE t1 COMPUTE STATISTICS;

The statement

    SELECT c2 
    FROM t1
    WHERE c1 NOT IN
    (
      SELECT /*+ NL_AJ */ c1 FROM t2
    );

generates the following execution plan

0     SELECT STATEMENT Optimizer=CHOOSE
1   0   NESTED LOOPS (ANTI)
2   1     TABLE ACCESS (FULL) OF 'T1'
3   1     TABLE ACCESS (FULL) OF 'T2'