索引聚簇因子,表示了索引所指向的数据在物理实际存储上的紧簇度,该数值越大,则表示越不紧簇,该值越小,则表示该索引非常紧簇。
该概念与索引相关。
比如,有如下一个表的数据存储结构:数据块一
数据块2
100 Steven King SKING ...
156 Janette King JKING ...
115 Alexander Khoo AKHOO ...
.
.
.
116 Shelli Baida SBAIDA ...
204 Hermann Baer HBAER ...
105 David Austin DAUSTIN ...
130 Mozhe Atkinson MATKINSO ...
166 Sundar Ande SANDE ...
174 Ellen Abel EABEL ...
149 Eleni Zlotkey EZLOTKEY ...
200 Jennifer Whalen JWHALEN ...
.
.
.
137 Renske Ladwig RLADWIG ...
173 Sundita Kumar SKUMAR ...
101 Neena Kochar NKOCHHAR ...
然后,有如下两种索引:
索引一 INDEX_NAME:
Abel,block1row1
Ande,block1row2
Atkinson,block1row3
Austin,block1row4
Baer,block1row5
索引二 EMP_EMP_ID_PK:
100,block1row50
101,block2row1
102,block1row9
103,block2row19
104,block2row39
105,block1row4
则这两个索引的聚簇因子为:
SQL> SELECT INDEX_NAME, CLUSTERING_FACTOR
2 FROM ALL_INDEXES
3 WHERE INDEX_NAME IN ('EMP_NAME_IX','EMP_EMP_ID_PK');
INDEX_NAME CLUSTERING_FACTOR
-------------------- -----------------
EMP_EMP_ID_PK 19
EMP_NAME_IX 2
显然,EMP_NAME_IX索引聚簇因子要小很多,因为相邻的索引KEY之间,存取数据位于同一块数据块(data block)上,
检索数据时IO操作消耗很小,
基本可以忽略不计!!
最后贴上索引聚簇因子的作用:
The clustering factor is relevant for index scans because it can show:
Whether the database will use an index for large range scans
The degree of table organization in relation to the index key
Whether you should consider using an index-organized table, partitioning, or table cluster if rows must be ordered by the index key
-----参考自ORACLE的官方手册