使用索引快速全扫描(IndexFFS)避免全表扫描(FTS)
(文档 ID 70135.1)
什么使用使用Index FFS比FTS好?
Oracle 8的Concept手册中介绍:
1. 索引必须包含所有查询中参考到的列。
2. Index FFS只能通过CBO(Index hint强制使用CBO)获得。
3. Index FFS使用hint:/*+ INDEX_FFS() */。
Index FFS是在7.3中引入的。在Oracle 7中,它要求初始化参数V733_PLANS_ENABLED的值需要是TRUE。
Index FFS将会扫描索引的全部块。返回的数据不会存储。Index FFS能够使用多块IO读,可以并行执行,就像全表扫描那样。
实例:
使用Oracle 8.0.5中标准的emp和dept表(可以使用UTLSAMPL.SQL创建),不建立任何表的统计数据或索引。使用autotrace产生执行计划。
准备工作:创建一个复合索引
create index emp_ix on emp(empno, deptno, ename);
查询单个表,查询出索引的全部列:
SQL> select /*+ INDEX_FFS (emp emp_ix) */ empno, deptno, ename from emp;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=4 Card=21 Bytes=693)
1 0 INDEX (FAST FULL SCAN) OF 'EMP_IX' (NON-UNIQUE) (Cost=4 Ca
rd=21 Bytes=693)
查询单个表,索引列放在select或where子句中:
SQL> select /*+ INDEX_FFS (emp emp_ix) */ empno, ename from emp
where deptno > :bind1;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=4 Card=2 Bytes=66)
1 0 INDEX (FAST FULL SCAN) OF 'EMP_IX' (NON-UNIQUE) (Cost=4 Ca
rd=2 Bytes=66)
查询索引的所有列,以及不再索引中的列:
SQL> select /*+ INDEX_FFS (emp emp_ix) */ empno, ename from emp
where deptno > :bind1 and sal <:bind2;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=1 Card=1 Bytes=46)
1 0 TABLE ACCESS (FULL) OF 'EMP' (Cost=1 Card=1 Bytes=46)
注意:CBO选择FTS,因为Index FFS不能满足查询所有列。
查询复合索引中的部分列:
SQL> select /*+ INDEX_FFS (emp emp_ix) */ ename from emp;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=4 Card=21 Bytes=147)
1 0 INDEX (FAST FULL SCAN) OF 'EMP_IX' (NON-UNIQUE) (Cost=4 Ca
rd=21 Bytes=147)
注意:如果查询中是索引列的子集,仍会选择Index FFS。
包含join的查询;
SQL> select /*+ INDEX_FFS ( e emp_ix) */ e.ename, d.dname
from emp e , dept d
where e.deptno=d.deptno;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=6 Card=4 Bytes=168)
1 0 HASH JOIN (Cost=6 Card=4 Bytes=168)
2 1 INDEX (FAST FULL SCAN) OF 'EMP_IX' (NON-UNIQUE) (Cost=4
Card=21 Bytes=420)
3 1 TABLE ACCESS (FULL) OF 'DEPT' (Cost=1 Card=21 Bytes=462)
分享到:
相关推荐
FFS-M快速文件分享系统,基于MYSQL驱动,所以运行此程序前,请检查您的PHP是否支持MYSQL。 FFS-M V4.4正式版功能 伪静态功能(无需服务器相关组件支持) 老版本浏览器自动提示升级浏览器 智能下载核心(实现下载...
FFS快速文件分享系统(Fast file system),FFS的开发始终贯彻“简单,高效,实用”的理念,采用了当前公认高效率的PHP编程语言编写系统内核,先后开发更新 了多个版本,每一版本都比前一版本做了大量的改进,并融入...
FFS的最新版本目前是第4版,吸纳了FFS3用户提供的大量改进建议,是一个全面革新的版本,同是也采用了诸多的新技术。 面向用户: 三步完成文件上传,分享,管理,使用方法依旧简单。 CSS技术提供更快的访问速度和...
FFS的最新版本目前是第4版,吸纳了FFS3用户提供的大量改进建议,是一个全面革新的版本,同是也采用了诸多的新技术。 面向用户: 三步完成文件上传,分享,管理,使用方法依旧简单。 CSS技术提供更快的访问速度和...
FFS5-Mini作为FFS5核心的延伸产品,拥有了FFS5的全部高级特性,其中包括修复所有已知错误 此版本为FFS MINI VEER120731此为FFS5系列最终版,包含所有已有扩展安装步骤:直接进入根目录即可进入安装程序,请确保...
FFS的最新版本目前是第4版,吸纳了FFS3用户提供的大量改进建议,是一个全面革新的版本,同是也采用了诸多的新技术。 面向用户: 三步完成文件上传,分享,管理,使用方法依旧简单。 CSS技术提供更快的访问速度和...
FFS Firewall是一款基于PHP编写的,轻量级的,免费的,开源的,应用程序防火墙,能够为...使用本程序之前请务必阅读使用说明和使用协议。 2011-10-31 V1.3 修正拦截访问后未及时中断的问题。 控制面板的一些JS问题。
FFS-M快速文件分享系统,基于MYSQL驱动,所以运行此程序前,请检查您的PHP是否支持MYSQL。 PS:之后将会发布BLSQL版。 FFS-M V4.0正式版功能 伪静态功能(无需服务器相关组件支持) 老版本浏览器自动提示升级浏览器 ...
亲测好用,挺不错的资源,大家快来下载吧!挺有用的!需要的话可以来下载哦!作者使用过,在修改过的华硕p8z777-v lx bios上成功实现在m.2 nvme支持。有需要的朋友快下载吧。
FFS上传环境服务器检测程序其实是一款探针程序,专用于 想做网盘的用户,能够检测出服务器的上传环境配置,在你 打算购买某虚拟主机或服务器之前,或者准备部署网盘程序, 使用此程序检测服务器上传环境,可以...
FFS-M快速文件分享系统,基于MYSQL驱动,所以运行此程序前,请检查您的PHP是否支持MYSQL。FFS-M V4.4正式版功能伪静态功能(无需服务器相关组件支持)老版本浏览器自动提示升级浏览器智能下载核心(实现下载限速,...
汽车SBW之FFS系统的仿真分析,王晓明,吴海波,在简述汽车转向及线控技术的发展之后,介绍了汽车线控转向系统的基本架构,分析了力反馈(FFS)系统的重要作用。在力反馈系统数学模�
索引范围搜索(Index Range Scan),或者是全索引扫描(INDEX fastfullscan,INDEX_FFS); 如果是表于表之间连接的时候,它会负责让表之间以一种什么样子的形式来关联,比如 HASH_JOIN 还是NESTED LOOPS 或者是MERGE ...
FFS5-Mini作为FFS5核心的延伸产品,拥有了FFS5的全部高级特性,其中包括。 #参数自动化:程序核心自动处理主要数据。程序即传即用。 #无限制扩展:专门研制的MoreFile(魔方)框架存储系统框架,拥有操作系统般的...
亚马逊FFS SDK 快速配网
作者使用过,在修改过的华硕p8z777-v lx bios上成功实现在m.2 nvme支持。有需要的朋友快下载吧。
老主板BIOS H61 H81 支持PCIE 固态硬盘 NVME模块 驱动
PHP实例开发源码—FFS php快速文件分享系统 MYSQL版.zip PHP实例开发源码—FFS php快速文件分享系统 MYSQL版.zip PHP实例开发源码—FFS php快速文件分享系统 MYSQL版.zip
基于PHP的FFS php快速文件分享系统 MYSQL版.zip