合并二级分区

Range_subpartition_desc中只能定义table_parttioning_decription中表空间,其他属性均不能自由定义。

list_subpartition_desc中只能定义table_parttioning_decription中表空间,其他属性均不能自由定义。

使用合并分区时,应注意以下规则:

  • 被合并的二级子分区表必须属于同一个一级子分区表。
  • 合并后的二级子分区表将继承一级子分区表的所有属性,除非用户自行为它定义新的属性。
  • 与被合并的二级子分区表相关的局部分区索引,会被自行合并之后被标记为unusable。
  • 进行合并分区后,基于主表的全局分区索引,全局非分区索引,局部分区索引都会失效。

示例:合并二级分区

下面的例子将二级子分区表p1_sub2和p1_sub3合并到二级子分区表p1_sub2

--  清理环境
DROP TABLE tab;

-- 创建分区表
CREATE TABLE tab
(
    c1 int, 
    c2 varchar(2)
)
PARTITION BY RANGE(C1)
SUBPARTITION BY LIST(C2)
(
    PARTITION p1 VALUES LESS THAN(10)
    (
        SUBPARTITION p1_sub1 VALUES ('A1', 'A2'),
        SUBPARTITION p1_sub2 VALUES ('B1', 'B2', 'B3'),
        SUBPARTITION p1_sub3 VALUES ('C1', 'C2', 'C3')
    ),
    PARTITION p2 VALUES LESS THAN(20)
);


ALTER TABLE tab MERGE SUBPARTITIONS p1_sub2, p1_sub3 INTO SUBPARTITION p1_sub2 ;

--  删除表和表空间
DROP TABLE tab CASCADE;