哈希连接(hash join)原理(二)
------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem |
------------------------------------------------------------------------------------------------------------------
| 1 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.01 | 4 | | | |
|* 2 | HASH JOIN | | 1 | 1 | 0 |00:00:00.01 | 4 | 921K| 921K| 176K (0)|
|* 3 | TABLE ACCESS FULL| TEST1 | 1 | 1 | 0 |00:00:00.01 | 4 | | | |
|* 4 | TABLE ACCESS FULL| TEST2 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")
3 - filter("T1"."OBJECT_ID"=99999)
4 - filter("T2"."OBJECT_ID"=99999)
SQL> select /*+leading(t1) use_hash (t2)*/count(*)
2 from test1 t1, test2 t2
3 where t1.object_id = t2.object_id
4 and 1=2;
COUNT(*)
----------
0
SQL> select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));
PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID bnrfbt4ybxnnp, child number 0
-------------------------------------
select /*+leading(t1) use_hash (t2)*/count(*) from test1 t1, test2 t2 where t1.object_id =
t2.object_id and 1=2
Plan hash value: 1013001923
---------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | OMem | 1Mem | Used-Mem |
---------------------------------------------------------------------------------------------------------
| 1 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.01 | | | |
|* 2 | FILTER | | 1 | | 0 |00:00:00.01 | | | |
|* 3 | HASH JOIN | | 0 | 100 | 0 |00:00:00.01 | 921K| 921K| |
| 4 | TABLE ACCESS FULL| TEST1 | 0 | 100 | 0 |00:00:00.01 | | | |
| 5 | TABLE ACCESS FULL| TEST2 | 0 | 1000 | 0 |00:00:00.01 | | | |
---------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(NULL IS NOT NULL)
3 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")