B 型树索引
GBase 8s 将 B 型树索引用于包含内置数据类型的列(称为传统 B 型树索引),用于包含一维用户定义的数据类型的列(称为一般 B 型树索引),以及用户定义的数据类型返回的值。
内置数据类型包括 character、datetime、integer 和 float 等。有关内置数据类型的更多信息,请参阅《GBase 8s SQL 指南:参考》。
用户定义的数据类型包括不透明和单值数据类型。 有关用户定义的数据类型的更多信息,请参阅 GBase 8s 用户定义的例程与数据类型开发者指南。
用户定义的函数的返回值可以是内置或用户定义的数据类型,但不是简单大对象(TEXT 或 BYTE 数据类型)或智能大对象(BLOB 或 CLOB 数据类型)。有关如何使用函数索引的更多信息,请参阅使用函数索引。
有关如何估计 B 型树索引大小的信息,请参阅估计索引页。
常规索引页面的结构
常规索引按照页层次结构排列(技术上称为 B 型树)。
该层次结构的最顶层包含单独的根页。 中间层(在需要时)包含一些枝页。 每个分支页包含一些条目,这些条目指向该索引的下一级别的页的子集。索引的最底层包含一组叶子页。 每个叶子页包含索引条目的列表,这些条目指向表中的行。
一个索引所需要的层次数取决于该索引中唯一键的数量,以及每页所能包含的索引条目的数量。 每页中条目的数量又取决于在上面建立索引的列的大小。
如果一个给定表的索引页能包含 100 个键,那么最多包含 100 行的表只需要一个单层索引:根页。 如果该表增长到超过 100 行,在 101 和 10,000 行之间,那么它需要两层索引:1 个根页和 2 到 100 个叶子页。 如果该表增长到超过 10,000 行,其大小 在 10,001 行和 1,000,000 行之间,那么它需要三层索引:根页、一组数量为 100 的枝叶以及最多可达 10,000 个的叶子页。
包含于叶子页中的索引条目按照键值顺序排序。 索引条目由键和一个或多个行指针组成。 键就是一行数据的索引列的副本。 行指针提供地址,用于定位包含该键的行。 唯一索引包含表中每行的一个索引条目。
有关 GBase 8s 的特殊索引的信息,请参阅用户定义的数据类型上的索引。