LIST分区根据数据的枚举值进行分区。
以下示例为北京、天津、内蒙、河北的所有客户存储在一个分区中,其他省市的客户存储在不同的分区中。按区域分析账户的管理人员可以利用分区剪枝。
区域 | 编号 |
华北(p_cn_north) | 1:BJ,2:TJ,3:HB,4:NM |
华南(p_cn_south) | 5:GD, 6:GX, 7:HN |
华东(p_cn_east) | 8:SH, 9:ZJ, 10:JS |
创建具有LIST分区的表:
CREATE TABLE `accounts` (
`id` int(11) DEFAULT NULL,
`account_number` int(11) DEFAULT NULL,
`customer_id` int(11) DEFAULT NULL,
`branch_id` int(11) DEFAULT NULL,
`region_id` int(11) DEFAULT NULL,
`region` varchar(5) DEFAULT NULL,
`status` varchar(1) DEFAULT NULL
) ENGINE=InnoDB
PARTITION BY LIST (`region_id`)
(PARTITION p_cn_north VALUES IN (1,2,3,4),
PARTITION p_cn_south VALUES IN (5,6,7),
PARTITION p_cn_east VALUES IN (8,9,10)
);
LIST COLUMNS分区是LIST分区的扩展,它允许使用多个列作为分区键,并允许使用非整数类型的数据类型列作为分区列,您可以使用字符串类型、DATE和DATETIME列。与使用RANGE COLUMNS进行分区一样,不需要在COLUMNS()子句中使用表达式将列值转换为整数。事实上,在COLUMNS()中不允许使用列名以外的表达式。
创建具有LIST COLUMNS分区的表:
DROP TABLE IF EXISTS accounts;
CREATE TABLE accounts
( id INT,
account_number INT,
customer_id INT,
branch_id INT,
region_id INT,
region VARCHAR(5),
status VARCHAR(1)
)
PARTITION BY LIST COLUMNS(region)
(PARTITION p_cn_north VALUES IN ('BJ','TJ','HB','NMG'),
PARTITION p_cn_south VALUES IN ('GD','GX','HN'),
PARTITION p_cn_east VALUES IN ('SH','ZJ','JS')
);
文档内容是否对您有帮助?