oracle索引扫描
索引扫描不同于表扫描,表扫描只有一种类型就是全表扫描(full table scans),而索引扫描根据具体情况不同可以分为如下几类:
索引唯一扫描(index unique scan).这种扫描发生在主键或者唯一索引上,根据键值可以唯一确定要访问的记录,这种扫描方式因为返回的记录数少,能够快速定位记录,扫描效率较高
索引范围扫描(index range scan).这种撒么一般发生在返回多个值的时候,如where条件中>and <或者非唯一索引中的=时,范围扫描要求返回的结果集不能太多,否则不能从索引扫描上获取益处,因为从索引只能获得rowid与索引列的值,,有可能还需要根据rowid回表一条条的去找行的其他数据,除非不需要回表便能从索引上获得必需的数据。
使用index rang scan的3种情况:
(a) 在唯一索引列上使用了range操作符(> < <> >= <= between)。
(b) 在组合索引上,只使用部分列进行查询,导致查询出多行。
(c) 对非唯一索引列上进行的任何查询。
索引全扫描(index full scan)这种方式中,ORACLE会按照索引值的顺序全部扫描该索引,类似全表扫描,效率不高。CBO根据统计数据得知进行全索引扫描比进行全表扫描更有效时,才能进行全索引扫描,而且此时查询出的数据都必须可以从索引中直接得到。
索引快速扫描(index fast full scan).与索引全扫描不同,不按照索引值的顺序来访问,而是直接读取索引块来访问索引数据。这种存取方法中,可以使用多块读功能。也可以直接使用并行读方法以便于获得最大吞吐量与缩短执行时间。
索引跳跃式扫描(index skip scan) .复合索引中第一个字段类型少,而第二个字段唯一,当条件中用到第二个字段时,将跳过第一个字段。
实际OLTP系统中只有索引唯一扫描和索引范围扫描。
建议继续学习:
- 由浅入深探究mysql索引结构原理、性能分析与优化 (阅读:15775)
- 浅谈MySQL索引背后的数据结构及算法 (阅读:10695)
- 由浅入深理解索引的实现(2) (阅读:7102)
- HBase二级索引与Join (阅读:6406)
- 如何建立合适的索引? (阅读:6114)
- InnODB和MyISAM索引统计集合 (阅读:5818)
- mysql查询中利用索引的机制 (阅读:5928)
- Innodb 表和索引结构 (阅读:5587)
- MySQL索引背后的数据结构及算法原理 (阅读:5177)
- mysql索引浅析 (阅读:4751)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:marvelyu 来源: Marvelyu's Notes(余广宏的个人技术博客)
- 标签: 扫描 索引
- 发布时间:2012-05-04 00:09:51
-
[869] WordPress插件开发 -- 在插件使用 -
[136] 解决 nginx 反向代理网页首尾出现神秘字 -
[57] 整理了一份招PHP高级工程师的面试题 -
[56] 分享一个JQUERY颜色选择插件 -
[54] 用 Jquery 模拟 select -
[54] 如何保证一个程序在单台服务器上只有唯一实例( -
[54] CloudSMS:免费匿名的云短信 -
[53] Innodb分表太多或者表分区太多,会导致内 -
[53] 全站换域名时利用nginx和javascri -
[51] jQuery性能优化指南
