oracle 索引统计信息
在介绍索引统计信息之前,我们来根据图8-5简要回顾一下索引的结构。处于顶端的数据块称为根块(root block)。这个块就是每次查询的起始块。根块又引用分支块(branch block)。注意,也可以将根块看作一个分支块。每个分支块又相应地引用另一级别的分支块,或者如图8-5所示,引用叶子块(leaf block)。
叶子块存储键值(在本例中,键值是在6到89之间的一些数字),并存储引用数据的rowid。对于任何一个给定的索引,根块和每个叶子块之间的分支块的数量永远是相同的。换句话说,索引永远是平衡的。注意,为支持高效率的范围值查找(例如,在25和45之间的所有值),叶子块都互相链接起来。
并非所有索引都具有这三种类型的块。实际上,分支块只有在根块无法存储引用的所有叶子块时才会出现。此外,如果索引非常小,那么它会由一个单独的块组成,并包含通常由根块和叶子块存储的所有数据。
下面的查询展示了如何获取一张表最重要的索引统计信息:
COLUMN name FORMAT A10
COLUMN blevel FORMAT 9
COLUMN leaf_blks FORMAT 99999
COLUMN dst_keys FORMAT 99999
COLUMN num_rows FORMAT 99999
COLUMN clust_fact FORMAT 99999
COLUMN leaf_per_key FORMAT 99999
COLUMN data_per_key FORMAT 99999
SELECT index_name AS name,
blevel,