AND-EQUAL

Description

Joins two or more non-unique indexes on the same table

Versions

This operation is implemented in the following versions

7.3.4
8.0.4
8.0.5
8.0.6
8.1.5
8.1.6
8.1.7
9.0.1
9.2.0
10.1.0
10.2.0

Example

This example was developed using Oracle 9.2.0.1 on Windows 2000

This example requires the following table and index definitions

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

    CREATE INDEX i1 ON t1 (c2);
    CREATE INDEX i2 ON t1 (c3);

    ANALYZE TABLE t1 COMPUTE STATISTICS;

The statement

    SELECT /*+ AND_EQUAL (t1 i1 i2) */ c1
    FROM t1
    WHERE c2 = 0 AND c3 = 0;

generates the following execution plan

0     SELECT STATEMENT Optimizer=CHOOSE
1   0   TABLE ACCESS (BY INDEX ROWID) OF 'T1'
2   1     AND-EQUAL
3   2       INDEX (RANGE SCAN) OF 'I1' (NON-UNIQUE)
4   2       INDEX (RANGE SCAN) OF 'I2' (NON-UNIQUE)