对于分支节点块(包括根节点块)来说,其所包含的索引条目都是按照顺序排列的(缺省
是升序排列,也可以在创建索引时指定为降序排列)。每个索引条目(也可以叫做每条记
录)都具有两个字段。第一个字段表示当前该分支节点块下面所链接的索引块中所包含的
最小键值;第二个字段为四个字节,表示所链接的索引块的地址,该地址指向下面一个索
引块。在一个分支节点块中所能容纳的记录行数由数据块大小以及索引键值的长度决定。
比如从上图一可以看到,对于根节点块来说,包含三条记录,分别为(
0 B1
)、(
500
B2
)、(
1000 B3
),它们指向三个分支节点块。其中的
0
、
500
和
1000
分别表示这三个分
支节点块所链接的键值的最小值。而
B1
、
B2
和
B3
则表示所指向的三个分支节点块的地
址。
对于叶子节点块来说,其所包含的索引条目与分支节点一样,都是按照顺序排列的
(缺省是升序排列,也可以在创建索引时指定为降序排列)。每个索引条目(也可以叫做
每条记录)也具有两个字段。第一个字段表示索引的键值,对于单列索引来说是一个值;
而对于多列索引来说则是多个值组合在一起的。第二个字段表示键值所对应的记录行的
ROWID
,该
ROWID
是记录行在表里的物理地址。如果索引是创建在非分区表上或者索引是
分区表上的本地索引的话,则该
ROWID
占用
6
个字节;如果索引是创建在分区表上的全局
索引的话,则该
ROWID
占用
10
个字节。
知道这些信息以后,我们可以举个例子来说明如何估算每个索引能够包含多少条目,
以及对于表来说,所产生的索引大约多大。对于每个索引块来说,缺省的
PCTFREE
为
10
%,也就是说最多只能使用其中的
90
%。同时
9i
以后,这
90
%中也不可能用尽,只能
使用其中的
87
%左右。也就是说,
8KB
的数据块中能够实际用来存放索引数据的空间大约
为
6488
(
8192×90
%
×88
%)个字节。
假设我们有一个非分区表,表名为
warecountd
,其数据行数为
130
万行。该表中有一
评论