HASH JOIN (SEMI)
Description
Perform a hash semi join between two row sources
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
Columns do not require NOT NULL constraints. Tables do not need to be
analyzed
Note that the columns involved in the anti-join must both have NOT NULL
constraints. Other permutations result in FILTER execution plans
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);
The statement
SELECT c2
FROM t1
WHERE EXISTS
(
SELECT /*+ HASH_SJ */ c1 FROM t2
WHERE t1.c1 = t2.c1
);
generates the following execution plan
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 HASH JOIN (SEMI)
2 1 TABLE ACCESS (FULL) OF 'T1'
3 1 TABLE ACCESS (FULL) OF 'T2'
|