ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle执行计划三

oracle执行计划三

原创 Linux操作系统 作者:leonwoo 时间:2008-06-17 13:34:31 0 删除 编辑
------------------------------------
SELECT STATEMENT [CHOOSE] Cost=1
TABLE ACCESS BY ROWID EMP [ANALYZED]
    INDEX UNIQUE SCAN EMP_I1

         
但是如果查询的数据能全在索引中找到,就可以避免进行第2步操作,避免了不必要的I/O,此时即使通过索引扫描取出的数据比较多,效率还是很高的
SQL> explain
plan for select empno from emp where empno=10;  -- 只查询empno列值
Query Plan
------------------------------------
SELECT STATEMENT [CHOOSE] Cost=1
 
 INDEX UNIQUE SCAN EMP_I1

       
进一步讲,如果sql语句中对索引列进行排序,因为索引已经预先排序好了,所以在执行计划中不需要再对索引列进行排序
SQL> explain plan for select empno, ename from emp
where empno > 7876
order by empno;
Query Plan
--------------------------------------------------------------------------------
SELECT STATEMENT   [CHOOSE] Cost=1   
T
ABLE ACCESS BY ROWID EMP [ANALYZED]
  INDEX RANGE SCAN EMP_I1 [ANALYZED]

       
从这个例子中可以看到:因为索引是已经排序了的,所以将按照索引的顺序查询出符合条件的行,因此避免了进一步排序操作。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/79730/viewspace-350515/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle执行计划二
下一篇: oracle执行计划四
请登录后发表评论 登录
全部评论

注册时间:2008-06-16

  • 博文量
    20
  • 访问量
    14330