博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

h0ng123 linux,oracle.unix

---在蓝天白云下自由飞翔 爱生活,爱CU---

Google

学习shell脚本编程的好地方
   h0ng123.cublog.cn
关于作者  
姓名:h0ng
职业:计算机
年龄:24
位置:广东
个性介绍:学习网络技术,UNIX/linux 系统管理.娱乐


我的分类  




Oracle语句优化规则汇总(5)-1

  1. 用EXPLAIN PLAN 分析SQL语句

  EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句。 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称。

  你需要按照从里到外,从上到下的次序解读分析的结果。 EXPLAIN PLAN分析的结果是用缩进的格式排列的, 最内部的操作将被最先解读, 如果两个操作处于同一层中,带有最小操作号的将被首先执行。

  NESTED LOOP是少数不按照上述规则处理的操作, 正确的执行路径是检查对NESTED LOOP提供数据的操作,其中操作号最小的将被最先处理。

  通过实践, 感到还是用SQLPLUS中的SET TRACE 功能比较方便。

  举例:

SQL> list
1 SELECT *
2 FROM dept, emp
 3* WHERE emp.deptno = dept.deptno
SQL> set autotrace traceonly /*traceonly 可以不显示执行结果*/
SQL> /
14 rows selected.
Execution Plan
----------------------------------------------------------
 0   SELECT STATEMENT Optimizer=CHOOSE
 1  0 NESTED LOOPS
 2  1  TABLE ACCESS (FULL) OF 'EMP'
 3  1  TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
 4  3    INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
Statistics
----------------------------------------------------------
      0 recursive calls
      2 db block gets
     30 consistent gets
      0 physical reads
      0 redo size
    2598 bytes sent via SQL*Net to client
    503 bytes received via SQL*Net from client
      2 SQL*Net roundtrips to/from client
      0 sorts (memory)
      0 sorts (disk)
     14 rows processed

·Oracle语句优化规则汇总(5)-2
·Oracle语句优化规则汇总(5)-3

 发表于: 2008-04-17,修改于: 2008-04-17 20:55 已浏览493次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:6.26808

京ICP证041476号