更新时间:2024-12-23 GMT+08:00
RANGE-RANGE
约束与限制
- RANGE类型要求每个分区定义的分区键值value或value_list必须是单调递增的。
- MAXVALUE只能位于最后位置。
- 对于NULL的处理,认为NULL值是无限小的值,因此NULL值总是会插入第一个分区定义里。
- 每个主分区下的子分区可以看成是一个新的一级的RANGE分区表,因此所有的规则和约束都同一级的RANGE是一样的。
语法
创建一个或多个RANGE-RANGE分区表,其中每个分区可能有一个或一个以上的RANGE类型的子分区。
CREATE TABLE ... PARTITION BY RANGE {(expr) | COLUMNS(column_list)} SUBPARTITION BY RANGE {(expr) | COLUMNS(column_list)} [(partition_definition [, partition_definition] ...)];
其中,partition_definition为:
PARTITION partition_name VALUES LESS THAN {(value | MAXVALUE | value_list) | MAXVALUE} [(subpartition_definition [, subpartition_definition] ...)]
subpartition_definition为:
SUBPARTITION subpartition_name VALUES LESS THAN {value | value_list | MAXVALUE}
参数名称 |
描述 |
---|---|
expr |
分区字段表达式。目前只支持INT类型,不支持字符类型。 |
column_list |
RANGE COLUMNS的情况下使用。分区字段列表,不支持表达式,可以支持多列。 |
value |
分区边界值。 |
value_list |
RANGE COLUMNS的情况下使用,多个字段的边界值。 |
MAXVALUE |
最大值。 |
partition_name |
分区名称,同一个表中不可重复。 |
subpartition_name |
子分区名称, 同一个表中不可重复。 |
使用示例
- RANGE-RANGE类型的使用示例
CREATE TABLE tbl_range_range (col1 INT, col2 INT, col3 varchar(20)) PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2) ( PARTITION p0 VALUES LESS THAN (1000) ( SUBPARTITION s0 VALUES LESS THAN(100), SUBPARTITION s1 VALUES LESS THAN(MAXVALUE) ), PARTITION p1 VALUES LESS THAN (2000) ( SUBPARTITION s2 VALUES LESS THAN(100), SUBPARTITION s3 VALUES LESS THAN(200) ), PARTITION p2 VALUES LESS THAN (MAXVALUE) ( SUBPARTITION s4 VALUES LESS THAN(200), SUBPARTITION s5 VALUES LESS THAN(400) ) );
- RANGE COLUMNS-RANGE类型的使用示例
CREATE TABLE tbl_range_col_range (col1 INT, col2 INT, col3 INT) PARTITION BY RANGE COLUMNS(col1, col2) SUBPARTITION BY RANGE(col3) ( PARTITION p1 VALUES LESS THAN(1000, MAXVALUE)( SUBPARTITION s0 VALUES LESS THAN(100), SUBPARTITION s1 VALUES LESS THAN(MAXVALUE) ), PARTITION p2 VALUES LESS THAN(2000, MAXVALUE)( SUBPARTITION s2 VALUES LESS THAN(100), SUBPARTITION s3 VALUES LESS THAN(200) ), PARTITION p3 VALUES LESS THAN(MAXVALUE, MAXVALUE)( SUBPARTITION s4 VALUES LESS THAN(200), SUBPARTITION s5 VALUES LESS THAN(400) ) );
父主题: 二级分区