语法
枚举类型分区,需要枚举出每个分区的分区键的值,枚举值不能重复,并支持使用DEFAULT值定义"catch-all" 分区。
CREATE TABLE ...
PARTITION BY LIST COLUMNS(partition_column_list) [PARTITIONS number]
(
PARTITION part_name VALUES IN (list_bound_value_se),
PARTITION part_name VALUES IN (list_bound_value_set),
...
)
partition_column_list:
partition_column[, partition_column, partition_column, ...]
list_bound_value_set:
list_bound_value[, list_bound_value, list_bound_value, ...]
说明
LIST分区策略与LIST COLUMNS分区策略的区别请参见List Columns分区策略与List分区策略对比。
限制
List Columns分区不允许使用分区函数。
默认最大分区数目不允许超过8192。
默认最大分区列数目不允许超过5个。
所有分区的名字不能重复,长度默认不超过16个字符。
使用TIMESTAMP等时区敏感的数据类型作为分区列时,该分区列必须配套地使用UNIX_TIMESTAMP分区函数。
示例
使用向量分区键birthday、id按列表分区。
CREATE TABLE tb_lc(
id bigint not null auto_increment,
bid int,
name varchar(30),
birthday datetime not null,
primary key(id)
)
PARTITION BY LIST COLUMNS(birthday, id)
(
PARTITION p1 VALUES IN (('2020-01-01', 1000),('2020-01-01', 2000)),
PARTITION p2 VALUES IN (('2021-01-01', 1000),('2021-01-01', 2000)),
PARTITION p3 VALUES IN (('2022-01-01', 1000),('2022-01-01', 2000)),
PARTITION pm VALUES IN (DEFAULT)
)
数据类型限制
整数类型: BIGINT/BIGINT UNSINGEDINT/INT/INT UNSINGED/MEDIUMINT/MEDIUMINT UNSINGED/SMALLINT/SMALLINT UNSINGED/TINYINT/TINYINT UNSINGED
时间类型:DATETIME/DATE/TIMESTAMP
字符串类型:CHAR/VARCHR
定点类型:DECIMAL(小数部分的位数要求必须是0)