mysql 分区-list分区(三)

list分区

list分区与range分区有类似的地方
list分区字段必须是整型或者转换为整型
按照某个字段上的规则,不同的数据离散地分布在不同的区中。

语法:

create table <table> (
	// 字段
) ENGINE=数据库引擎  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
partition by LIST (分区字段或者基于该字段的返回的整数值的表达式) (
  partition <分区名称> values IN (Value1,Value2, Value3),
  ...
  partition <分区名称> values IN (Value4, Value5),
);

list:表示固定值进行分区
分区名称: 要保证不同,也可以采用 p0、p1、p2 这样的分区名称,
ValueN : 表示某个具体的值

demo1:
假定你需要将超市员工划分地区,该表有40家超市职员记录。这40家超市的编号从1到40。而这40家超市分布在5个有经销权的地区,店铺分布如下表示

地区店铺id号
东区1,2,3,4,5,6,7,8
南区17,18,19,20,21,22,23,24
西区33,34,35,36,37,38,39,40
北区9,10,11,12,13,14,15,16
中心区25,26,27,28,29,30,31,32
CREATE TABLE `employees_list` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ename` varchar(30) NOT NULL DEFAULT '' COMMENT '员工名称',
  `ecode` varchar(30) NOT NULL DEFAULT '' COMMENT '员工编号',
  `store_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '所属门店',
  `create_time` datetime(6) DEFAULT NULL COMMENT '添加时间',
  PRIMARY KEY (`id`,`store_id`)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='员工表'
partition by list(store_id)(
	partition p0 values in (1,2,3,4,5,6,7,8),
	partition p1 values in (17,18,19,20,21,22,23,24),
	partition p2 values in (33,34,35,36,37,38,39,40),
	partition p3 values in (9,10,11,12,13,14,15,16),
	partition p4 values in (25,26,27,28,29,30,31,32)
);

分区文件(截图):
在这里插入图片描述

1.新增分区:

地区店铺id号
华南地区41,42,43,44,45,46,47,48
alter table employees_list add partition (partition p5 values in (41,42,43,44,45,46,47,48));

2.合并分区,重置分区

将华南区和南区合并

地区店铺id号
华南地区,南区41,42,43,44,45,46,47,48, 17,18,19,20,21,22,23,24
alter table employees_list 
REORGANIZE PARTITION p0,p1,p2,p3,p4,p5 INTO
(
	partition p0 values in (1,2,3,4,5,6,7,8),
	partition p1 values in (17,18,19,20,21,22,23,24,41,42,43,44,45,46,47,48),
	partition p2 values in (33,34,35,36,37,38,39,40),
	partition p3 values in (9,10,11,12,13,14,15,16),
	partition p4 values in (25,26,27,28,29,30,31,32)
)

3.删除分区

alter table employees_list drop partition p4;

4.移除表的分区

alter table employees_list remove partitioning;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值