在虚谷数据库中,表可以按照列表、范围和哈希值进行分区,分区后的表,其上的索引和普通表上的索引有所不同,对于分区表上的索引,在虚谷中被分为两类,局部索引和全局索引,首先我们需要了解这两种索引的特点以及区别。
全局索引:就是在全表上创建索引,它可以创建自己的分区,可以和分区表的分区不一样,也就是它是独立的索引。
全局索引的使用特点:
- 使用全局索引,因全局索引和表之间没有直接的联系,所以需要用户指定分区范围。
- 全局索引以整个表的数据为对象建立索引,索引分区中的索引条目既可能是基于相同的键值但是来自不同的分区,也可能是多个不同键值的组合。
- 全局索引既允许索引分区的键值和表分区键值相同,也可以不相同。全局索引和表之间没有直接的联系,这一点和局部索引不同。
- 全局索引和表没有直接的关联,必须显式的指定maxvalue值。假如表中新加了分区,不会在全局索引中自动增加新的分区,必须手工添加相应的分区。
- 在虚谷数据库中,使用全局索引,索引键值和分区键值相同时,称为前缀索引;索引键值与分区键值不想同时,称为非前缀索引。在虚谷数据库中,全局索引既支持前缀索引,也支持非前缀索引。Oracle数据库中,全局索引只支持前缀索引。
- 目前,在虚谷数据库中,对于全局索引的分区,只支持范围分区方式。
局部索引:局部索引一定是分区索引,分区索引就是在所有每个区上单独创建索引,它能自动维护,在drop或truncate某个分区时不影响该索引的其他分区索引的使用,也就是索引不会失效,维护起来比较方便。局部索引与分区表的分区是一样的,即分区表有多少个分区,局部索引就有多少个。
分区索引的使用特点:
- 使用局部索引,不需要指定分区范围。因为局部索引是针对分区表的分区的,当局部索引创建时,虚谷数据库服务器会自动为表中的每个分区创建独立的索引分区。
- 局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区说,即局部索引的分区机制和表的分区机制一样。
- 局部索引的索引列以分区键开头,则称为前缀局部索引;局部索引的索引列不以分区键开头,则称为非前缀局部索引。在虚谷数据库中,这两种局部索引方式都可支持。
- 前缀和非前缀索引都可以支持索引分区消除,前提是查询的条件中包含索引分区键。
- 局部索引只支持分区内的唯一性,无法支持表上的唯一性,因此如果要用局部索引去给表做唯一性约束,则约束中必须要包括分区键列。
- 局部分区索引是对单个分区的,每个分区索引只指向一个表分区。正因为这点,局部分区索引具有更高的可用性。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23525425/viewspace-677263/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23525425/viewspace-677263/