根据索引的类型与where限制条件的不同,有4种类型的索引扫描:
索引唯一扫描(index
unique scan)
索引范围扫描(index
range scan)
索引全扫描(index
full scan)
索引快速扫描(index
fast full scan)
(1) 索引唯一扫描(index unique scan)
通过唯一索引查找一个数值经常返回单个ROWID。如果存在UNIQUE 或PRIMARY KEY 约束(它保证了语句只存取单行)的话,Oracle经常实现唯一性扫描。
使用唯一性约束的例子:
SQL> explain plan for
select empno,ename from emp where empno=10;
Query Plan
------------------------------------
SELECT STATEMENT [CHOOSE] Cost=1
TABLE ACCESS BY ROWID EMP [ANALYZED]
INDEX UNIQUE SCAN EMP_I1
(2) 索引范围扫描(index range scan)
使用一个索引存取多行数据,在唯一索引上使用索引范围扫描的典型情况下是在谓词(where限制条件)中使用了范围操作符(如>、<、<>、>=、<=、between)
使用索引范围扫描的例子:
SQL> explain plan for select empno,ename from emp
where empno > 7876 order by empno;
Query Plan
--------------------------------------------------------------------------------
SELECT STATEMENT [CHOOSE] Cost=1
TABLE ACCESS BY ROWID EMP
[ANALYZED]
INDEX RANGE SCAN EMP_I1 [ANALYZED]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/79730/viewspace-350517/
,如需转载,请注明出处,否则将追究法律责任。