no_swap_join_inputs 与 leading

http://blog.csdn.net/jgmydsai/article/details/18221751?ADUIN=604178834&ADSESSION=1389577130&ADTAG=CLIENT.QQ.5275_.0&ADPUBNO=26274


首先建立测试用表如下

[sql]  view plain copy
  1. create table t1 as select * from dba_objects;  
  2. create table t2 as select * from dba_objects;  
  3. create table t3 as select * from dba_objects;  
  4. create table t4 as select * from dba_objects;  

如下语句用leading改驱动表无效

[sql]  view plain copy
  1. SELECT /*+ leading(t1) use_hash(t1 t2)  use_hash(t1 t3) */  
  2.  t1.object_id,t2.object_name,t3.object_name  
  3.   FROM t1  
  4.  INNER JOIN t2 ON (t1.object_id = t2.object_id)  
  5.  INNER JOIN t3 ON (t1.object_name = t3.object_name)  
  6.   
  7. Execution Plan  
  8. ----------------------------------------------------------  
  9. Plan hash value: 1573120526  
  10.   
  11. ------------------------------------------------------------------------------------  
  12. | Id  | Operation       | Name | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |  
  13. ------------------------------------------------------------------------------------  
  14. |   0 | SELECT STATEMENT    |      |  1218K|   260M|       |  2841   (1)| 00:00:35 |  
  15. |*  1 |  HASH JOIN      |      |  1218K|   260M|  8656K|  2841   (1)| 00:00:35 |  
  16. |   2 |   TABLE ACCESS FULL | T3   |   113K|  7320K|       |   347   (1)| 00:00:05 |  
  17. |*  3 |   HASH JOIN     |      | 77853 |    11M|  8576K|  1445   (1)| 00:00:18 |  
  18. |   4 |    TABLE ACCESS FULL| T1   | 96439 |  7440K|       |   347   (1)| 00:00:05 |  
  19. |   5 |    TABLE ACCESS FULL| T2   | 77853 |  6006K|       |   347   (1)| 00:00:05 |  
  20. ------------------------------------------------------------------------------------  
  21.   
  22. Predicate Information (identified by operation id):  
  23. ---------------------------------------------------  
  24.   
  25.    1 - access("T1"."OBJECT_NAME"="T3"."OBJECT_NAME")  
  26.    3 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")  
  27.   
  28. Note  
  29. -----  
  30.    - dynamic sampling used for this statement (level=2)  

这时可以与no_swap_join_inputs配合

[sql]  view plain copy
  1. SELECT /*+ no_swap_join_inputs(t3) leading(t1) use_hash(t1 t2)  use_hash(t1 t3) */  
  2.  t1.object_id,t2.object_name,t3.object_name  
  3.   FROM t1  
  4.  INNER JOIN t2 ON (t1.object_id = t2.object_id)  
  5.  INNER JOIN t3 ON (t1.object_name = t3.object_name);  
  6. Execution Plan  
  7. ----------------------------------------------------------  
  8. Plan hash value: 261998084  
  9.   
  10. ------------------------------------------------------------------------------------  
  11. | Id  | Operation       | Name | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |  
  12. ------------------------------------------------------------------------------------  
  13. |   0 | SELECT STATEMENT    |      |  1218K|   260M|       |  2841   (1)| 00:00:35 |  
  14. |*  1 |  HASH JOIN      |      |  1218K|   260M|    12M|  2841   (1)| 00:00:35 |  
  15. |*  2 |   HASH JOIN     |      | 77853 |    11M|  8576K|  1445   (1)| 00:00:18 |  
  16. |   3 |    TABLE ACCESS FULL| T1   | 96439 |  7440K|       |   347   (1)| 00:00:05 |  
  17. |   4 |    TABLE ACCESS FULL| T2   | 77853 |  6006K|       |   347   (1)| 00:00:05 |  
  18. |   5 |   TABLE ACCESS FULL | T3   |   113K|  7320K|       |   347   (1)| 00:00:05 |  
  19. ------------------------------------------------------------------------------------  
  20.   
  21. Predicate Information (identified by operation id):  
  22. ---------------------------------------------------  
  23.   
  24.    1 - access("T1"."OBJECT_NAME"="T3"."OBJECT_NAME")  
  25.    2 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")  
  26.   
  27. Note  
  28. -----  
  29.    - dynamic sampling used for this statement (level=2)  

[sql]  view plain copy
  1. SELECT /*+ no_swap_join_inputs(t3) leading(t2) use_hash(t1 t2)  use_hash(t1 t3) */  
  2.  t1.object_id,t2.object_name,t3.object_name  
  3.   FROM t1  
  4.  INNER JOIN t2 ON (t1.object_id = t2.object_id)  
  5.  INNER JOIN t3 ON (t1.object_name = t3.object_name);  
  6. Execution Plan  
  7. ----------------------------------------------------------  
  8. Plan hash value: 1184213596  
  9.   
  10. ------------------------------------------------------------------------------------  
  11. | Id  | Operation       | Name | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |  
  12. ------------------------------------------------------------------------------------  
  13. |   0 | SELECT STATEMENT    |      |  1218K|   260M|       |  2841   (1)| 00:00:35 |  
  14. |*  1 |  HASH JOIN      |      |  1218K|   260M|    12M|  2841   (1)| 00:00:35 |  
  15. |*  2 |   HASH JOIN     |      | 77853 |    11M|  6920K|  1445   (1)| 00:00:18 |  
  16. |   3 |    TABLE ACCESS FULL| T2   | 77853 |  6006K|       |   347   (1)| 00:00:05 |  
  17. |   4 |    TABLE ACCESS FULL| T1   | 96439 |  7440K|       |   347   (1)| 00:00:05 |  
  18. |   5 |   TABLE ACCESS FULL | T3   |   113K|  7320K|       |   347   (1)| 00:00:05 |  
  19. ------------------------------------------------------------------------------------  
  20.   
  21. Predicate Information (identified by operation id):  
  22. ---------------------------------------------------  
  23.   
  24.    1 - access("T1"."OBJECT_NAME"="T3"."OBJECT_NAME")  
  25.    2 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")  
  26.   
  27. Note  
  28. -----  
  29.    - dynamic sampling used for this statement (level=2)  






你可能感兴趣的:(no_swap_join_inputs 与 leading)