语法
按照范围边界分区,常用于按照时间边界进行分区。分区边界必须是递增的,支持使用MAXVALUE作为最大边界值。
CREATE TABLE ...
PARTITION BY RANGE COLUMNS (partition_column_list) [PARTITIONS number]
(
PARTITION part_name VALUES LESS THAN (range_bound_value_list),
PARTITION part_name VALUES LESS THAN (range_bound_value_list),
...
)
partition_column_list:
partition_column[, partition_column, partition_column, ...]
range_bound_value_list:
range_bound_value[, range_bound_value, range_bound_value, ...]
说明
RANGE分区策略与RANGE COLUMNS分区策略的区别请参见Range Columns分区策略与Range分区策略对比。
限制
Range Columns分区不支持使用分区函数。
默认最大分区数目不允许超过8192。
默认最大分区列数目不允许超过5个。
所有分区的名字不能重复,长度默认不能超过16个字符。
示例
使用向量分区键birthday、id按范围分区并建表。
CREATE TABLE tb_rc(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY RANGE COLUMNS(birthday, id)
(
PARTITION p1 VALUES LESS THAN('2020-01-01', 1000),
PARTITION p2 VALUES LESS THAN('2021-01-01', 2000),
PARTITION p3 VALUES LESS THAN('2022-01-01', 3000),
PARTITION pm VALUES LESS THAN(MAXVALUE,MAXVALUE)
)
数据类型限制
整数类型: BIGINT/BIGINT UNSINGEDINT/INT/INT UNSINGED/MEDIUMINT/MEDIUMINT UNSINGED/SMALLINT/SMALLINT UNSINGED/TINYINT/TINYINT UNSINGED
时间类型:DATETIME/DATE
字符串类型:CHAR/VARCHR
定点类型:DECIMAL(小数部分的位数要求必须是0)