MySql8.0根据多个列创建表分区

MySql8.0根据多个列创建表分区

注意,这个创建方法适合已经知道字段内会有什么数据情况下使用,如果新增数据时,数据内容不是分区里面设置的就会保存失败。

创建语句如下:

CREATE TABLE `test`  (
                                       `device_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '设备ID',
                                       `device_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '设备名称',
                                       `belong_city` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '所属地市',
                                       `belong_third_party` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '所属第三方',
                                       PRIMARY KEY (`device_id``belong_city`, `belong_third_party`) USING BTREE,
                                       INDEX `summarized_device2_device_id_idx`(`device_id`) USING BTREE,
                                       INDEX `idx_selecteDevice`(`device_id`, `belong_city`, `belong_third_party`) USING BTREE COMMENT '根据设备查询索引'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '设备汇总表' ROW_FORMAT = DYNAMIC
# COLUMNS (xx,xx) 表示需要使用的列字段
PARTITION BY LIST COLUMNS (`belong_third_party`,`belong_city`)
(
PARTITION `test_third_city` VALUES IN (('类型1', 'shenzhen')),
PARTITION `test_third_city2` VALUES IN (('类型2', 'dongguan')),
# 分区的规则,一个分区可以使用多个规则匹配数据
PARTITION `test_third_city3` VALUES IN (('类型3', 'ces'),('类型4', 'ces2')),
PARTITION `test_def` VALUES IN ((NULL, NULL))
)
;


## 查看创建表分区
SELECT PARTITION_NAME,TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = 'test';


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值