DB2 分区表的效率问题及如何建立索引
分区索引(partitioned index)是 DB2 V9.7 中的新特性,在本文中将介绍什么是分区索引,如何创建和管理分区索引,分区索引如何改进大型数据库性能,读者将获得对分区索引的第一手体验。每个分区索引由多个索引分区(index partition)组成,每个索引分区只对相应的数据分区(data partition)的数据作索引。
在 DB2 V9.7中,一个分区表可以同时存在分区索引和非分区索引。具体地:
分区索引由一组索引分区构成,每个索引分区都包含单一数据分区的索引条目。每个索引分区都只包含对相应数据分区中的数据的引用。系统生成的索引和用户生成的索引都可以是分区索引。
非分区索引是单一的索引对象,它引用分区表中所有的行。非分区索引始终作为单一表空间中的独立索引对象进行创建,即使表数据分区跨多个表空间亦如此。
示例:
--建立分区索引
CREATE INDEX INDEX_NAME ON TABLE_NAME(COL_NAME ASC) PARTITIONED
--建立非分区索引
CREATE INDEX INDEX_NAME on TABLE_NAME(COL_NAME DESC) NOT PARTITIONED IN TABLESPACE_NAME;
在 DB2 V9.7 之前,分区表上的索引是不能分区的。由于分区表很多情况都是应用在数据仓库环境中,当数据量很大的时候,索引也随之变得很大,从而导致一些的性能上降低。
在 DB2 V9.7 中,索引也可以是分区的,这一特性称之为分区索引(partitioned index)。分区索引由多个索引分区(index partition)组成,每个索引分区中的键值指向相应的唯一一个数据分区(data partition)的数据,系统创建的索引或者用户的创建的索引都可以是分区索引。