用二叉树的中序遍历来看Oracle执行计划的执行顺序


我们先用一个小表来,来说明一下,Oracle执行计划该注意哪些地方。

  1. hr@ORCL> set autotrace traceonly  
  2. hr@ORCL> select * from t;  
  3.   
  4. 模糊比较两条sql的优劣时,建议先查看以下两个值:  
  5. Cost (%CPU):cpu代价,这个值要代数和。比如,这里是3+3=6  
  6. consistent gets:这个值一般要多执行几次!让他稳定下来,才有比较的意义。  
  7. Execution Plan :  
  8. ----------------------------------------------------------   
  9. Plan hash value: 1601196873  
  10. 下面这个计划看的方法:由里到外,由上到下  
  11. --------------------------------------------------------------------------   
  12. | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |  
  13. --------------------------------------------------------------------------   
  14. |   0 | SELECT STATEMENT  |      |     1 |     6 |     3   (0)| 00:00:01 |  
  15. |   1 |  TABLE ACCESS FULL| T    |     1 |     6 |     3   (0)| 00:00:01 |  
  16. --------------------------------------------------------------------------   
  17.   
  18.   
  19. Statistics  
  20. ----------------------------------------------------------   
  21.         228  recursive calls  --访问数据字典得到元数据。第二次执行相同语句,递归调用基本为零。   
  22.           0  db block gets  -- 指DML语句所得到的数据块个数   
  23.          33  consistent gets  --重要!!指select语句所得到的数据块个数   
  24.           8  physical reads --硬盘上读出的数据   
  25.           0  redo size   --产生的日志   
  26.         414  bytes sent via SQL*Net to client       --网络流量指标   
  27.         385  bytes received via SQL*Net from client  --网络流量指标   
  28.           2  SQL*Net roundtrips to/from client  
  29.           4  sorts (memory)  
  30.           0  sorts (disk)  
  31.           1  rows processed  

现在,我们用一个大表,来把执行计划列出来。

  1. sys@ORCL> select * from dba_objects;  
  2.   
  3. 50393 rows selected.  
  4.   
  5.   
  6. Execution Plan  
  7. ----------------------------------------------------------   
  8. Plan hash value: 2127761497  
  9.   
  10. ----------------------------------------------------------------------------------------------   
  11. | Id  | Operation                      | Name        | Rows  | Bytes | Cost (%CPU)| Time     |  
  12. ----------------------------------------------------------------------------------------------   
  13. |   0 | SELECT STATEMENT               |             | 48669 |  8412K|   145   (5)| 00:00:02 |  
  14. |   1 |  VIEW                          | DBA_OBJECTS | 48669 |  8412K|   145   (5)| 00:00:02 |  
  15. |   2 |   UNION-ALL                    |             |       |       |            |          |  
  16. |*  3 |    FILTER                      |             |       |       |            |          |  
  17. |*  4 |     HASH JOIN                  |             | 51423 |  4670K|   143   (5)| 00:00:02 |  
  18. |   5 |      TABLE ACCESS FULL         | USER$       |    62 |   868 |     2   (0)| 00:00:01 |  
  19. |*  6 |      TABLE ACCESS FULL         | OBJ$        | 51423 |  3967K|   140   (4)| 00:00:02 |  
  20. |*  7 |     TABLE ACCESS BY INDEX ROWID| IND$        |     1 |     8 |     2   (0)| 00:00:01 |  
  21. |*  8 |      INDEX UNIQUE SCAN         | I_IND1      |     1 |       |     1   (0)| 00:00:01 |  
  22. |   9 |    TABLE ACCESS BY INDEX ROWID | LINK$       |     1 |    88 |     0   (0)| 00:00:01 |  
  23. |  10 |     NESTED LOOPS               |             |     1 |   102 |     2   (0)| 00:00:01 |  
  24. |  11 |      TABLE ACCESS FULL         | USER$       |    62 |   868 |     2   (0)| 00:00:01 |  
  25. |* 12 |      INDEX RANGE SCAN          | I_LINK1     |     1 |       |     0   (0)| 00:00:01 |  
  26. ----------------------------------------------------------------------------------------------  
  • 1
  • 2
  • 下一页

相关内容