PHP code: SQL> SELECT * FROM t1 a WHERE a.object_id NOT IN (SELECT object_id FROM t2 b) 2 ; no rows selected Execution Plan ---------------------------------------------------------- Plan hash value: 3597920939 ----------------------------------- | Id | Operation | Name | ----------------------------------- | 0 | SELECT STATEMENT | | |* 1 | FILTER | | | 2 | TABLE ACCESS FULL| T1 | |* 3 | TABLE ACCESS FULL| T2 | ----------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter( NOT EXISTS (SELECT 0 FROM "T2" "B" WHERE LNNVL("OBJECT_ID"<>:B1))) 3 - filter(LNNVL("OBJECT_ID"<>:B1)) Note ----- - rule based optimizer used (consider using cbo) Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 1288020 consistent gets 0 physical reads 0 redo size 1139 bytes sent via SQL*Net to client 458 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed SQL> alter table t1 modify object_id not null; Table altered. SQL> alter table t2 modify object_id not null; Table altered. SQL> SELECT * FROM t1 WHERE object_id not in (SELECT /*+ hash_aj */ object_id FROM t2); no rows selected Execution Plan ---------------------------------------------------------- Plan hash value: 3791526412 ----------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | ----------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 83 | 71 | |* 1 | HASH JOIN ANTI | | 1 | 83 | 71 | | 2 | TABLE ACCESS FULL| T1 | 19882 | 1533K| 25 | | 3 | TABLE ACCESS FULL| T2 | 19882 | 79528 | 25 | ----------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("OBJECT_ID"="OBJECT_ID") Note ----- - cpu costing is off (consider enabling it) Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 512 consistent gets 0 physical reads 0 redo size 1139 bytes sent via SQL*Net to client 458 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 row
SQL> SELECT * FROM t1 a WHERE a.object_id NOT IN (SELECT object_id FROM t2 b) 2 ; no rows selected Execution Plan ---------------------------------------------------------- Plan hash value: 3597920939 ----------------------------------- | Id | Operation | Name | ----------------------------------- | 0 | SELECT STATEMENT | | |* 1 | FILTER | | | 2 | TABLE ACCESS FULL| T1 | |* 3 | TABLE ACCESS FULL| T2 | ----------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter( NOT EXISTS (SELECT 0 FROM "T2" "B" WHERE LNNVL("OBJECT_ID"<>:B1))) 3 - filter(LNNVL("OBJECT_ID"<>:B1)) Note ----- - rule based optimizer used (consider using cbo) Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 1288020 consistent gets 0 physical reads 0 redo size 1139 bytes sent via SQL*Net to client 458 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 rows processed SQL> alter table t1 modify object_id not null; Table altered. SQL> alter table t2 modify object_id not null; Table altered. SQL> SELECT * FROM t1 WHERE object_id not in (SELECT /*+ hash_aj */ object_id FROM t2); no rows selected Execution Plan ---------------------------------------------------------- Plan hash value: 3791526412 ----------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | ----------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 83 | 71 | |* 1 | HASH JOIN ANTI | | 1 | 83 | 71 | | 2 | TABLE ACCESS FULL| T1 | 19882 | 1533K| 25 | | 3 | TABLE ACCESS FULL| T2 | 19882 | 79528 | 25 | ----------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("OBJECT_ID"="OBJECT_ID") Note ----- - cpu costing is off (consider enabling it) Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 512 consistent gets 0 physical reads 0 redo size 1139 bytes sent via SQL*Net to client 458 bytes received via SQL*Net from client 1 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 0 row
PHP code: SQL> explain plan for SELECT * FROM t1 a WHERE a.object_id NOT IN (SELECT object_id FROM t2 b) 2 ; Explained. SQL> @?/rdbms/admin/utlxpls PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------------- Plan hash value: 3597920939 ----------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | ----------------------------------------------------------- | 0 | SELECT STATEMENT | | 994 | 78526 | 25 | |* 1 | FILTER | | | | | | 2 | TABLE ACCESS FULL| T1 | 994 | 78526 | 25 | |* 3 | TABLE ACCESS FULL| T2 | 2 | 8 | 25 | ----------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter( NOT EXISTS (SELECT 0 FROM "T2" "B" WHERE "OBJECT_ID"=:B1)) 3 - filter("OBJECT_ID"=:B1)
SQL> explain plan for SELECT * FROM t1 a WHERE a.object_id NOT IN (SELECT object_id FROM t2 b) 2 ; Explained. SQL> @?/rdbms/admin/utlxpls PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------------- Plan hash value: 3597920939 ----------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost | ----------------------------------------------------------- | 0 | SELECT STATEMENT | | 994 | 78526 | 25 | |* 1 | FILTER | | | | | | 2 | TABLE ACCESS FULL| T1 | 994 | 78526 | 25 | |* 3 | TABLE ACCESS FULL| T2 | 2 | 8 | 25 | ----------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter( NOT EXISTS (SELECT 0 FROM "T2" "B" WHERE "OBJECT_ID"=:B1)) 3 - filter("OBJECT_ID"=:B1)