索引范围扫描(INDEX RANGE SCAN)适用于所有类型的B树索引,当扫描的对象是唯一性索引时,此时目标SQL的where条件一定是范围查询(谓词条件为 BETWEEN、等);当扫描的对象是非唯一性索引时,对目标SQL的where条件没有限制(可以是等值查询,也可以是范围查询)。 索引范围扫描的结果可能会返回多条记录,其实这就是索引范围扫描中"范围"二字的本质含义。
测试一:唯一索引的范围查询
SCOTT@PDBORCL> select * from emp where empno>7369;
已选择13行。
执行计划----------------------------------------------------------
Plan hash value: 2787773736
----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 13 | 494 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID BATCHED| EMP | 13 | 494 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | PK_EMP | 13 | | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------
Predicate Information (identifiedbyoperation id):---------------------------------------------------
2 - access("EMPNO">7369)
统计信息----------------------------------------------------------
54recursive calls0db block gets97consistent gets21physica