用与对表所用的相同的方法对索引进行分段

如果在创建索引时未指定分段存储策略,那么使用与表相同的方法来对索引进行分段。

分段存储策略是指分布方案和放置分段的数据库空间集。 有关详细信息,请参阅规划分段存储策略

用与对表所用的相同方法对索引进行分段的示例

假设您用以下 SQL 语句创建分段表和索引:
CREATE TABLE tb1(a int) 
   FRAGMENT BY EXPRESSION
            (a >=0 AND a < 5) IN db1,
            (a >=5 AND a <10) IN db2;

CREATE INDEX idx1 ON tb1(a);
假设您接着创建一个未分段表,然后决定将它附加到前面的分段表。
CREATE TABLE tb2 (a int, CHECK (a >=10 AND a<15))
      IN db3;

CREATE INDEX idx2 ON tb2(a) 
      IN db3;

ALTER FRAGMENT ON TABLE tb1 
         ATTACH 
                  tb2 AS (a >= 10 and a<15) AFTER db2;
如果在现有的和新的表分段之间未发生数据移动,那么附加操作可以利用现有索引 idx2。 如果不发生数据移动:
  • 数据库服务器重新使用索引 idx2,并 将之转换为索引 idx1 的分段。
  • 索引 idx1 仍保持与 表 tb1 使用相同的分段存储策略。
如果数据库发现表 tb2 中的一行或多行属于 表 tb1 先前存在的分段,那么数据库服务器:
  • 删除并重建索引 idx1,使其包括 那些原先在表 tb1tb2 中的行
  • 删除索引 idx2

有关如何确保现有表分段和新表分段之间不发生数据移动的更多信息,请参阅确保在连接分段时不发生数据移动