背景:
按照《Oracle Conecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。
本文主题:第三章《Indexes and Index-Organized Tables》 - Overview of Indexes。
索引聚簇因子
索引聚簇因子衡量的是一个索引键值反映到数据表中行的顺序,例如雇员last name字段。索引反映到数据表中行的存储顺序越接近,聚簇因子的值就会越小。
聚簇因子可以粗略衡量通过索引读取表中数据所需要的IO数量:
聚簇因子和索引扫描相关,因为他能展示:
例如,假设employees表占用两个数据块。表3-1描述了两个数据块中的行(省略号表示数据未显示),
行是按照last name(粗体字)的顺序存储的。例如,数据块1的最后一行,是Abel,往上的下一行是Ande,按照英文字母的顺序,直到数据块1的第一行Steven King。数据块2的最后一行是Kochar,往上的下一行是Kumar,按照英文字母的顺序,直到数据块2的第一行Zlotkey。
假设last name列存在索引,每个键值都会对应到一个rowid。从概念上讲,索引键值像这样:
假设雇员ID列存在单独的索引。从概念上讲,索引可能像这样,雇员ID会分布在这两个块的任意位置:
示例3-2通过ALL_INDEXES视图检索这两个索引的聚簇因子值。EMP_NAME的聚簇因子值很低,他表示同一个叶子块中相邻的索引键值指向的数据行会位于相同的数据块中。EMP_EMP_ID_PK的聚簇因子值很高,他表示同一个叶子块中的相邻索引键值指向的数据行不太可能位于同一个数据块中。
关于聚簇因子的知识,可以参考: