连接索引

连接索引 是隐式遵循表分段存储策略(分布方案和分段所在的数据库空间集)的索引。 数据库服务器在首次对表进行分段时自动创建一个连接索引。

要创建连接索引,请不要在 CREATE INDEX 语句中指定分段存储策略或存储选项,如以下样本 SQL 语句中所示:
CREATE TABLE tb1(a int) 
   FRAGMENT BY EXPRESSION
            (a >=0 AND a < 5) IN dbsbspace1,
            (a >=5 AND a < 10) IN dbspace2
      ...
   ;

CREATE INDEX idx1 ON tb1(a);

对于使用基于表达式的分布方案或循环分布方案的分段表,也可以在单个数据库空间中创建表或索引的多个分区。这使您能够减少所需的数据库空间的数目,从而简化数据库空间的管理。

要创建具有分区的连接索引,请在 SQL 语句中包括分区名称,如此示例中所示:
CREATE TABLE tb1(a int) 
   FRAGMENT BY EXPRESSION
          PARTITION part1 (a >=0 AND a < 5) IN dbs1,
          PARTITION part2 (a >=5 AND a < 10) IN dbs1
          ...
 ;

    CREATE INDEX idx1 ON tb1(a);
可在 CREATE TABLE、CREATE INDEX 和 ALTER FRAGMENT ON INDEX 语句中使用“PARTITION BY EXPRESSION”而不是“FRAGMENT BY EXPRESSION”,如此示例中所示:
ALTER FRAGMENT ON INDEX idx1 INIT PARTITION BY EXPRESSION 
                       PARTITION part1   (a <= 10) IN dbs1,
                      PARTITION part2   (a <= 20) IN dbs1,
                        PARTITION part3  (a <= 30) IN dbs1;
使用 ALTER FRAGMENT 语法将不具有分区的分段索引更改为具有分区的索引。 下面的语法显示了您可以如何将分段索引转换为包含分区的索引:
CREATE TABLE t1 (c1 int) FRAGMENT BY EXPRESSION
          (c1=10) IN dbs1, (c1=20) IN dbs2, (c1=30) IN dbs3
CREATE INDEX ind1 ON t1 (c1) FRAGMENT BY EXPRESSION
          (c1=10) IN dbs1, (c1=20) IN dbs2, (c1=30) IN dbs3
ALTER FRAGMENT ON INDEX ind1 INIT FRAGMENT BY EXPRESSION
          PARTITION part_1 (c1=10) IN dbs1, PARTITION part_2 (c1=20) IN dbs1, 
          PARTITION part_3 (c1=30) IN dbs1,

创建包含分区的表或索引将提高性能,这是通过使得数据库服务器能够更快地进行搜索和减少所需的数据库空间数目来实现的。

通过对索引键使用与对表数据所使用的相同的规则,数据库服务器对连接索引进行分段,所采用的分布方案与对表所采用的相同。 这样,连接索引具有以下物理特征:

GBase 8s 不支持森林树连接索引。