哈希连接(hash join)原理(二)

2014-11-24 10:26:03 · 作者: · 浏览: 1
------------------------------------------------------------------------------------------ | 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")