首页 > 数据库 > Oracle > Oracle索引扫描的优势以及指定如何全索引扫描
全索引扫描有时也被称为快速全索引扫描,有些SQL查询可以以只通过读取索引而不读取表中的数据即可完成,例如下面的查询就不需要访问表中的数据,而仅仅是索引本身就可以完全满足这个查询。
select distinct
color
count(.)
from
automobiles
group by
color;
不读取表记录确实存在着巨大的优越性,但是在下列情况下仍然要求Oracle调用快速全索
引扫描。
·所有要求查询的字段必须在索引中指定。也就是说,在select和where子句中的所有字段必须在索引中存在。
.查询返回大于索引中所有记录的10%. 10%这个数字是由多块读取的程度和并行度来决定的:
·你正在试图计算表中符合特定条件记录的数目。快速完全索引查询通常用来进行count (*)操作。
基于成本的优化器将根据表和索引的统计资料来决定是否调用快速全索引扫描。你可以通
通过指定index_ ffs提示来强制使用快速全索弓l扫描,这样做通常要结合使用parallel _index提示来提高查询性能,例如,下面的查询就同时强制使用了并行的快速完全索引查询:
select distinct/,+index_ffs[c,pk_auto) parallel_index(automobiles,pk_auto)
color,
count(*)
from
automobiles
group by
color;
通常不是通过直觉来判断是否快速全索引扫描是服务于查询最快速的方法,
因为在这个过程中会有很多因素介人。因此,大多数专家级的SQL调整者将对满足快速全索引扫描的任何一个查询进行运行时间的测试,并察看反应速度是否有所提高。再次重申,这个方式在执行
count(*)操作时运行最快。对于计算操作,带有paraliel_ index的快速全索引扫描无疑是速度最快的访问方式
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/640706/viewspace-1043235/ ,如需转载,请注明出处,否则将追究法律责任。