拆离索引 是具有使用 CREATE INDEX 语句显式设置的单独分段存储策略的索引。
CREATE TABLE tb1 (a int) FRAGMENT BY EXPRESSION (a <= 10) IN tabdbspc1, (a <= 20) IN tabdbspc2, (a <= 30) IN tabdbspc3; CREATE INDEX idx1 ON tb1 (a) FRAGMENT BY EXPRESSION (a <= 10) IN idxdbspc1, (a <= 20) IN idxdbspc2, (a <= 30) IN idxdbspc3;
此例描述了常见的分段存储策略,它对索引分段的方法与对表分段的方法相同,但是它为索引分段指定了不同的数据库空间。 这种分段存储策略将索引分段放在与表不同的数据库空间中,可提高一些操作的性能,如备份、恢复等等。
除非指定了不建议使用的 IN TABLE 语法,否则,在缺省情况下,CREATE INDEX 语句创建的所有新索引都在与数据不同的表空间中分离和存储。
要创建具有分区的拆离索引,请在 SQL 语句中包括分区名称,如此示例中所示:
CREATE TABLE tb1 (a int) FRAGMENT BY EXPRESSION PARTITION part1 (a <= 10) IN dbs1, PARTITION part2 (a <= 20) IN dbs2, PARTITION part3 (a <= 30) IN dbs3; CREATE INDEX idx1 ON tb1 (a) FRAGMENT BY EXPRESSION PARTITION part1 (a <= 10) IN dbs1, PARTITION part2 (a <= 20) IN dbs2, PARTITION part3 (a <= 30) IN dbs3;
可在 CREATE TABLE、CREATE INDEX 和 ALTER FRAGMENT ON INDEX 语句中使用“PARTITION BY EXPRESSION”而不是“FRAGMENT BY EXPRESSION”。
如果不想对索引进行分段,可以将整个索引放入一个单独的数据库空间。
您可以使用表达式对任何表进行索引分段。 然而,您不能为索引显式创建循环分段存储方案。 每当使用循环分段存储方案对表进行分段时,都将所有与表伴随的索引转换为分离索引,以实现最佳性能。
森林树索引是分离索引。它们不能是连接索引。
有关此 sysfragments 系统目录表包含的字段值的完整描述,请参阅《GBase 8s SQL 指南:参考》。有关如何使用 sysfragments 来监视分段的信息,请参阅监视分段使用情况。