索引的几种扫描方式

Posted ORACLE-fans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了索引的几种扫描方式相关的知识,希望对你有一定的参考价值。

1、索引唯一扫描

  是针对唯一索引的扫描,它仅仅适用于where条件里是 等值查询的目标sql。因为扫描的对象是唯一性索引,索引唯一性扫描的结果最多返回一条记录

 

2、索引范围扫描

  适用于所有类型的B树索引。

  当扫描对象是唯一性索引时,此时目标sql的where条件一定是范围查询(谓词条件为 between 、<、>);

  当扫描对象是非唯一性索引时,此时目标sql的where条件没有限制(可以是等值,也可以是范围查询)

 

3、索引全扫描

  适用于所有类型的B树索引。

  要扫描目标索引所有叶子快的所有索引行。索引全扫描需要扫描目标索引的所有叶子快。

  oracle在做索引全扫描时只需要访问必要的分支块等位到该索引最左边的叶子快的第一行索引行,就可以利用该索引叶子块之间的双向指针链表,从左至右一次扫描叶子块的所有索引行

 

4、索引快速全扫描

  只适合于CBO

  可以单块读可以多快读

  结果集不一定是有序的。因为FFS 时 oracle根据索引行在磁盘上的 物理存储位置 扫描,而不是根据索引行的逻辑顺序扫描。因此结果不一定有序 

 

5、索引跳跃式扫描

  仅仅适用于那些目标索引前导列的distinct值数量较少、后续非前导列的可选择性有非常好的情形。因为索引跳跃式扫描的执行效率一定会随着目标索引前导列的distinct值数量的递增而递减

 

以上是关于索引的几种扫描方式的主要内容,如果未能解决你的问题,请参考以下文章

oracle 10g下范围分区扫描的几种方式

常见的几种索引扫描类型

sql优化的几种方式

大数据课堂0008会引起全表扫描的几种SQL 以及sql优化

sql优化的几种方法

浅谈数据库查询优化的几种思路