KingbaseES 全局索引


在分区表上创建的索引可分为全局索引和本地索引。全局索引包括全局非分区索引(Global Nonpartitioned Indexes)和全局分区索引(Global Partitioned Indexes)。全局分区索引(Global Partitioned Indexes)是指与分区表有不同分区方式的索引,它是在分区表的所有分区数据基础上创建的索引,目前KingbaseES 暂不支持。本地索引(本地分区索引,Local Partitioned Indexes),是指在每个表分区上单独创建的索引,是一种局部索引,也是一种分区索引,某一个索引分区只能索引到一个表分区。

create table t1_part(id1 integer,id2 integer,id3 integer)
partition by range(id1)
(
  partition part01 values less than(10000),
  partition part02 values less than(20000),
  partition part03 values less than(30000),
  partition part04 values less than(40000),
  partition part05 values less than(50000),
  partition part06 values less than(60000),
  partition part07 values less than(70000),
  partition part08 values less than(80000),
  partition part09 values less than(90000),
  partition part10 values less than(maxvalue)
);

create unique index idx1_t1_part on t1_part(id1) global ;
create unique index idx2_t1_part on t1_part(id2) global ;
create index idx3_t1_part on t1_part(id2) global ;

注意:并不是global 就一定是全局索引。当创建全局索引时,首先尝试创建本地索引,当不满足本地索引的条件(唯一索引的索引列不包括全部分区列或者分区条件为表达式)时会创建全局索引。

注意,启用分区表上的主键/唯一约束时,先尝试创建本地索引,不满足时则创建全局唯一索引。可以看到,只有第二个索引才是全局索引。

test=# \di+ idx1_t1_part
                                  List of relations
 Schema |     Name     |       Type        | Owner  |  Table  |  Size   | Description 
--------+--------------+-------------------+--------+---------+---------+-------------
 public | idx1_t1_part | partitioned index | system | t1_part | 0 bytes | 
(1 row)

test=# \di+ idx2_t1_part
                                 List of relations
 Schema |     Name     |     Type     | Owner  |  Table  |    Size    | Description 
--------+--------------+--------------+--------+---------+------------+-------------
 public | idx2_t1_part | global index | system | t1_part | 8192 bytes | 
(1 row)

test=# \di+ idx3_t1_part
                                  List of relations
 Schema |     Name     |       Type        | Owner  |  Table  |  Size   | Description 
--------+--------------+-------------------+--------+---------+---------+-------------
 public | idx3_t1_part | partitioned index | system | t1_part | 0 bytes | 
(1 row)

全局索引支持条件索引,不支持全局分区索引。全局索引不支持排他约束。