INDEX FULL SCAN和INDEX FAST FULL SCAN的区别

关于INDEX FULL SCAN和INDEX FAST FULL SCAN的区别在于,前者在对索引进行扫描的时候会考虑大索引的结构,而且会按照索引的排序,
而后者则不会,INDEX FAST FULL SCAN不会去扫描根块和分支块,对索引像访问堆表一样访问,所以这两个扫描方式用在不同的场合
如果存在ORDER BY这样的排序,INDEX FULL SCAN是合适的,如果不需要排序,那INDEX FAST FULL SCAN效率是更高的。

http://blog.itpub.net/7728585/viewspace-627061/

 

一、何时INDEX FULL SCAN 或 INDEX FAST FULL SCAN
1、select 与where子句中出现的所有列必须存在索引
2、查询返回的数据行总数占据整个索引10%以上的比率。取决于db_file_multiblock_read_count值与并行度的值
3、满足像统计行数这样的一些特定的标准,如count(*)这样的操作。count(*)操作几乎总是使用INDEX FAST FULL SCAN
4、对于索引列上order by之类的操作几乎总是使用INDEX FULL SCAN

注: 参数db_file_multiblock_read_count会在index fast full scan 像full table scan一样生效,因为整个索引都被访问,Oracle 此时
允许出现多块读(multiblock_read)。db_file_multiblock_read_count与paralle仅仅对index fast full scan情形。其次paralle在新版Oracle
中是否支持待证实。一旦上述几个条件满足,基于成本的优化器根据表和索引的统计信息来调用 index full scan 或者index fast full scan。
对于index fast full scan可以通过使用提示index_ffs来实现。

 

http://blog.csdn.net/narutobing/article/details/7888183

 

posted @ 2014-12-19 11:13  刘竹青  阅读(242)  评论(0编辑  收藏  举报