IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

oracle索引扫描

Marvelyu's Notes(余广宏的个人技术博客) 2012-05-04 00:09:51 累计浏览 3,022 次
本机暂存

    索引扫描不同于表扫描,表扫描只有一种类型就是全表扫描(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系统中只有索引唯一扫描和索引范围扫描。

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. Oracle MTS模式下 进程地址与会话信息 (累计阅读 14,409)
  2. 我对技术方向的一些反思 (累计阅读 11,320)
  3. TT的作者出新作品鸟:kyoto tycoon (累计阅读 7,954)
  4. 数据分析中常用的数据模型 (累计阅读 7,950)
  5. TinyURL设计方案 (累计阅读 7,334)
  6. 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼 (累计阅读 6,881)
  7. 性能测试工具sysbench简介 (累计阅读 6,027)
  8. 大于2GB的Listener.log和运行超过198天的主机上的Oracle实例 (累计阅读 5,863)
  9. 仅仅只备份是不够的 (累计阅读 5,825)
  10. 5分钟搞定你的Rest Server (累计阅读 5,743)