许多ORACLE开发人员对于当他们只检索很少量的行时优化器选择全表扫描而感到困惑,而没有意识到优化器考虑了表中列值的集簇因子。
下面这一段是Oracle 手册中关于CLUSTERING_FACTOR的说明:
Indicates the amount of order of the rows in the table based on the values of the index.
-
If the value is near the number of blocks, then the table is very well ordered. In this case, the index entries in a single leaf block tend to point to rows in the same data blocks.
-
If the value is near the number of rows, then the table is very randomly ordered. In this case, it is unlikely that index entries in the same leaf block point to rows in the same data blocks.
下面引用下CUUG给出的clustering_factor对索引列的影响的图,希望作者不要介意。