DB2 10.5 for Linux, UNIX, and Windows

集群索引和非集群索引

索引体系结构分为集群或非集群。集群索引是这样的索引:其在数据页面中的行的顺序对应于索引中的行的顺序。此顺序是任何表中只能存在一个集群索引的原因,而该表中可存在大量非集群索引。在某些数据库系统中,集群索引的叶节点对应于实际数据,而不是对应于指向在其他位置上找到的数据的指针。

集群索引和非集群索引都只包含索引结构中的键和记录标识。这些记录标识始终指向数据页面中的行。在使用集群索引的情况下,数据库管理器会尝试按照相应的键在索引页面中的顺序来将数据保存在数据页面中。因此,数据库管理器会尝试将具有相似键的行插入到相同页面上。如果对表进行了重组,那么会按照索引键的顺序将数据插入数据页面中。数据库管理器不会维护数据的任何顺序(与非集群索引的对应键的顺序相比时)。

重组具有所选索引的表会重新集群数据。建立了集群的索引对于带有范围谓词的列非常有用,因为它允许对表中的数据作更有效的顺序访问。因此,由于相似的值在同一数据页面上,系统会访存更少页面。

通常,表中只有一个索引可以具有较高的集群度。

由于集群索引使存储在页面中的数据的访问路径更线性化,因此它们可提高大多数查询操作的性能。此外,由于具有相似索引键值的行都存储在一起,因而在使用集群索引时顺序检测预取效率更高。

不能将集群索引指定为与 CREATE TABLE 语句配合使用的表定义的一部分。相反,只通过运行指定了 CLUSTER 选项的 CREATE INDEX 语句来创建集群索引。如果要针对主键集群表,那么 ALTER TABLE 语句必须用来在表上添加与创建的集群索引对应的主键。然后,会将此集群索引用作表的主键索引。
注: 使用 ALTER TABLE 语句将表中的 PCTFREE 设置为适当的值,并保留足够的可用空间以将具有相似值的行插入页面中,可有助于使表保持集群。 有关更多信息,请参阅 ALTER TABLE 语句以及减少对重组表和索引的需要

使用集群索引提高性能

通常,如果集群索引是唯一的,那么集群维护起来就更有效率。