为了实现Oracle关于增加SQL优化查询智能的承诺,Oracle9i增强了全索引SQL执行计划以支持基于功能的索引(function-based index)。在Oracle 8i中,SQL优化器添加了判断查询是否可以专门用一个现存的索引来解决的智能。一旦存在索引,Oracle就会绕过对表的访问,索引组织表(index-organized table,IOT)结构就是一个例子。在IOT结构中,所有的数据都载入索引的b-树结构,这样表(table)就成为一个多余的东西了。

一旦Oracle SQL优化器检测到查询无需访问表时,Oracle就调用全索引扫描并快速读取每一个索引块而无需接触表本身。有一点很重要:全索引扫描并没有读取索引节点,而是一块一块的执行扫描并快速捕获索引节点。最好,Oracle调用多块读取功能,调用多个过程来读取表。

Oracle和多块读取

为了加快表和索引的访问速度,Oracle使用了db_file_multiblock_read_count参数(默认参数为8)来辅助把全表扫描和全索引扫描所获得的数据块尽快送到数据缓冲区中。然而,这个参数只有当SQL查询执行全表扫描时才可用,并且,在绝大多数情况下,查询要使用索引来访问表。

Oracle对全索引扫描有如下限制:

SQL请求的全部列(column)必须驻留在索引树中;也就是说,SELECT和WHERE字句中的所有数据列必须存在于索引中。

查询访问大量的行(row)。根据你查询的范围,比例变化范围为10%到25%之间,这个比例参数db_file_multiblock_read_count的设置和查询的并行程度极大的影响到这个比例。

由于索引节点并没有按索引顺序排列,所以列并没有顺序。这样,ORDER BY字句将要求附加的排序操作。

Oracle提供了一个SQL提示(hint)来强制全索引扫描。你也可以通过指定index_ffs提示来强制快速索引扫描,这常常与parallel_index提示组合来提高性能。例如,下面的查询强迫使用并行快速全索引扫描:

select distinct /*+ index_ffs(c,pk_auto) parallel_index_

(automobile, pk_auto) color, count(*)

from

automobiles

group by color;

由于涉及了所有的变量,所以全索引是否会加快查询速度并不能简单的加以回答。所以,大多数有经验的SQL调试者(tuner)会对符合快速全索引扫描标准的查询进行手工计时,看看使用全索引扫描的反映时间是否会降低。

oracle 索引快速全扫描,用Oracle 9i全索引扫描快速访问数据相关推荐

  1. oracle查询不走索引全表扫描,使用索引快速全扫描(Index FFS)避免全表扫描的若干场景-Oracle...

    使用索引快速全扫描(Index FFS)避免全表扫描的若干场景 什么使用使用Index FFS比FTS好? Oracle 8的Concept手册中介绍: 1. 索引必须包含所有查询中参考到的列. 2. ...

  2. oracle 索引快速全扫描,使用索引快速全扫描(Index FFS)避免全表扫描的若干场景

    使用索引快速全扫描(Index FFS)避免全表扫描(FTS) (文档 ID 70135.1) 什么使用使用Index FFS比FTS好? Oracle 8的Concept手册中介绍: 1. 索引必须 ...

  3. oracle 索引快速全扫描,使用目录快速全扫描(Index FFS)避免全表扫描的若干场景

    使用索引快速全扫描(Index FFS)避免全表扫描的若干场景 使用索引快速全扫描(Index FFS)避免全表扫描(FTS) (文档 ID 70135.1) 什么使用使用Index FFS比FTS好 ...

  4. oracle9可以访问8,使用Oracle9i全索引扫描快速访问数据

    为了实现Oracle关于增加SQL优化查询智能的承诺,Oracle9i增强了全索引SQL执行计划以支持基于功能的索引(function-based index).在Oracle8中,SQL优化器添加了 ...

  5. oracle索引分类与区分,深入理解Oracle表(6):堆组织表(HOT)和索引组织表(IOT)的区别...

    摘要: 堆表:又称堆组织表,常用的表类型,以堆的方式管理,当增加数据时,将使用段中第一个适合数据大小的空闲空间.当删除数据时,留下的空间允许以后的DML操作重用. 堆组织表(heap table) 应 ...

  6. oracle索引创建与使用方法,oracle 索引的创建与使用

    什么是数据库索引 在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快. 索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容. 对于数据库来说,索引是 ...

  7. oracle的函数索引怎么建,如何创建oracle函数索引

    Oracle8i的很重要的一个新特性就是增加了function-based index这种索引类型(后面简称为FBI). 有了这个特性后,Oracle DBA就可以在索引中使用函数或者表达式了.这些函 ...

  8. mysql支持非关系_说下oracle、mysql、非关系型数据库中的索引结构?

    谢邀~~树懒君悉心整理了一篇索引结构方面的内容,跟各位知友分享分享~ Oracle 索引的数据结构:B-TreeOracle 数据库使用 B-trees 存储索引,来加速数据访问.若没有索引,你必须顺 ...

  9. oracle对sga统计信息不对,oracle 索引失效原因及解决方法

    一.以下的方法会引起索引失效 ‍1,<> 2,单独的>, 3,like "%_" 百分号在前. 4,表没分析. 5,单独引用复合索引里非第一位置的索引列. 6,字 ...

最新文章

  1. modify timezone
  2. 【Android 电量优化】电量优化 ( Battery Historian 环境要求 | 电量分析报告 | 电量优化三原则 | 电量优化注意事项 )
  3. 方法的定义使用,方法重载及方法的递归调用
  4. java Split 用法
  5. 关于数据库主键和外键
  6. C++学习之路 | PTA乙级—— 1006 换个格式输出整数 (15分)(精简)
  7. 辗转相除求最大公约数,最大公倍数
  8. ENVI入门系列教程---一、数据预处理---2.1自定义坐标系
  9. php收费视频网站实现,超好影视网站PHP源码,一键采集视频资源,对接第三方免签码支付,能设置每个视频能否收费...
  10. 3个空手套白狼的经典案例,教你如何利用商业模式疯狂赚钱
  11. 彻底了解DVD:从入门到精通(三)[转]
  12. 最强大脑记忆曲线(10)—— 信息统计
  13. fastadmin表格操作
  14. 盛诺基和信达生物达成临床研究合作
  15. ffmpeg保存rtsp视频流为mp4文件
  16. 微信小程序自定义card图文组件
  17. HTML与CSS——CSS字体样式
  18. tbr tbn tbc
  19. 好嗨哦!用Python进行诗歌接龙
  20. python自动读取邮件_Python3读取邮件内容

热门文章

  1. DBUtils 学习使用
  2. 微软程骉:智能医疗产业化应用的挑战和解决之道
  3. android studio中如何替换gradle以防下载卡住
  4. 2017python windows 客户端最新版本3.6.2安装教程
  5. 【求助】Android开发中的数据持久化
  6. AngularJS-源码阅读(八.二)
  7. Sonar集成CAS
  8. VC++中对话框数据交换【十全十美】
  9. RTTI、dynamic_cast、typeid、虚函数表
  10. mac php fpm 自动启动,mac系统,php-fpm加入开机启动项