RANGE-LIST
约束与限制
- LIST分区类型要求分区定义中的value或value_list都是唯一的,不同分区定义里也需要不能重复引入。
- 对于NULL的处理,只有value中包含了NULL值,才能插入或查询出NULL值,否则是不符合定义的,不允许插入。
- 每个主分区下的子分区可以看成是一个新的一级的LIST分区表,因此所有的规则和约束都同一级的LIST是一样的, 不同主分区下的子分区定义可以不一样。
语法
创建一个或多个RANGE-LIST分区表,其中每个分区可能有一个或一个以上的子分区。
CREATE TABLE ... PARTITION BY RANGE {(expr) | COLUMNS(column_list)} SUBPARTITION BY LIST {(expr) | COLUMNS(column_list)} [(partition_definition [, partition_definition] ...)];
其中,partition_definition为:
PARTITION partition_name VALUES LESS THAN {(value | value_list) | MAXVALUE} [(subpartition_definition [, subpartition_definition] ...)]
subpartition_definition为:
SUBPARTITION subpartition_name VALUES IN {(value | value_list)}
参数名称 |
描述 |
---|---|
expr |
分区字段表达式。目前只支持INT类型,不支持字符类型。 |
column_list |
RANGE COLUMNS的情况下使用。分区字段列表,不支持表达式,可以支持多列。 |
value |
分区边界值。 |
value_list |
RANGE COLUMNS的情况下使用,多个字段的边界值。 |
MAXVALUE |
最大值。 |
partition_name |
分区名称,同一个表中不可重复。 |
subpartition_name |
子分区名称, 同一个表中不可重复。 |
使用示例
- RANGE-LIST类型的使用示例
CREATE TABLE tbl_range_list (col1 INT, col2 INT, col3 varchar(20)) PARTITION BY RANGE(col1) SUBPARTITION BY LIST(col2) ( PARTITION m1 VALUES LESS THAN(1000) ( SUBPARTITION p0 VALUES in (1, 2), SUBPARTITION p1 VALUES in (3, 4), SUBPARTITION p2 VALUES in (5, 6) ), PARTITION m2 VALUES LESS THAN(2000) ( SUBPARTITION p3 VALUES in (1, 2), SUBPARTITION p4 VALUES in (3, 4), SUBPARTITION p5 VALUES in (5, 6) ), PARTITION m3 VALUES LESS THAN(MAXVALUE) ( SUBPARTITION p6 VALUES in (1, 2), SUBPARTITION p7 VALUES in (3, 4), SUBPARTITION p8 VALUES in (5, 6) ) );
- RANGE COLUMNS-LIST类型的使用示例
CREATE TABLE tbl_range_columns_list ( col1 INT, col2 INT, col3 varchar(20), col4 DATE ) PARTITION BY RANGE COLUMNS(col4) SUBPARTITION BY LIST(col1) ( PARTITION dp1 VALUES LESS THAN('2023-01-01')( SUBPARTITION p0 VALUES in (1, 2), SUBPARTITION p1 VALUES in (3, 4), SUBPARTITION p2 VALUES in (5, 6) ), PARTITION dp2 VALUES LESS THAN('2024-01-01')( SUBPARTITION p3 VALUES in (1, 2), SUBPARTITION p4 VALUES in (3, 4), SUBPARTITION p5 VALUES in (5, 6) ), PARTITION dp3 VALUES LESS THAN('2025-01-01')( SUBPARTITION p6 VALUES in (1, 2), SUBPARTITION p7 VALUES in (3, 4), SUBPARTITION p8 VALUES in (5, 6) ) );