如果是唯一索引,就只有一个rowid ,不是唯一索引,一律是range scan。range scan的特例就是整个索引或者只有一条记录,最后都是通过rowid找到那条记录的。
index fast full scan是根据extent id逐个block扫描的,这个时候对于索引block来说,跟full table scan的特性是一样的。它的优点是io数量少,快。也就是说,假设索引有3个extent,每个extent恰好16个block,而数据库每次io最多是16个block,则3个io就可以了。但缺点是里面的block 包含了叶子,枝,根,数据出来是没有顺序的。
比如索引 ind(a,b,c)
select b,c from ...
select a,c from ...
select a,b,c from ...
只要所需要获得的数据都被包含在索引中而不需要去表中获得,并且不为null的查询,就可以走index fast full scan。
可用index_ffs(tablename indexname)提示使用index fast full scan。
当进行index full scan的时候oracle定位到索引的root block,然后到branch block(如果有的话),在定位到第一个leaf block,然后根据leaf block的双向链表顺序读取。它所读取的块都是有顺序的,也是经过排序的。
而index fast full scan则不同,它是从段头开始,读取包含位图块,root block,所有的branch block,leaf block,读取的顺序完全有物理存储位置决定,并采取多块读,没次读取db_file_multiblock_read_count个块。
SQL> select /*+ index_ffs(aa_t inde_aa_t_full)*/ object_id from aa_t order by object_id;
用时: 00: 00: 00.01
执行计划»®
----------------------------------------------------------
Plan hash value: 3590010033
--------------------------------------------------------------------------------
----------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%
CPU)| Time |
--------------------------------------------------------------------------------
----------------
| 0 | SELECT STATEMENT | | 50035 | 195K| | 194
(5)| 00:00:03 |
| 1 | SORT ORDER BY | | 50035 | 195K| 1192K| 194
(5)| 00:00:03 |
| 2 | INDEX FAST FULL SCAN| INDE_AA_T_FULL | 50035 | 195K| | 42
(3)| 00:00:01 |
--------------------------------------------------------------------------------
----------------
而:
SQL> select object_id from aa_t order by object_id;
用时: 00: 00: 00.00
执行计划»®
----------------------------------------------------------
Plan hash value: 110832887
-------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 50035 | 195K| 114 (2)| 00:00:02 |
| 1 | INDEX FULL SCAN | INDE_AA_T1 | 50035 | 195K| 114 (2)| 00:00:02 |
-------------------------------------------------------------------------------
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12712263/viewspace-606959/ ,如需转载,请注明出处,否则将追究法律责任。