对于user_indexes中的clustering_factor列Oracle Reference Manual说明如下意思:
指定基于索引值的表中的行数:
1.如果这个值和块的数量接近,表明这个表是做了很好的排序。也就是说有序的。
在这种情况下,单个叶块上的索引条目趋向于同一个数据块上的列。
2.如果这个值和行的数量接近,表明这个表是随机排序的。也就是可能是无序的。
在这种情况下,同一叶块上的索引条目不可能指向同一数据块上的列。
以下测试证明上述内容
SQL> select a.index_name,b.num_rows,b.blocks,a.clustering_factor
2 from user_indexes a,user_tables b
3 where a.table_name=b.table_name
4 and a.index_name='T_OBJECT_ID_INDEX';
INDEX_NAME NUM_ROWS BLOCKS CLUSTERING_FACTOR
------------------------------ ---------- ---------- -----------------
T_OBJECT_ID_INDEX 4042 53 2293
由于2293接近4042所以应该偏向于FTS,如下
SQL> select * from t where object_id between '383' and '6649';
3672 rows selected.
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=7 Card=3666 Bytes=30
4278)
1 0 TABLE ACCESS (FULL) OF 'T' (Cost=7 Card=3666 Bytes=304278)