MySql 5.7.1 分区的实践

在性能优化中,Mysql 进行分区,能有效提高查询效率,因此开始百度了起来。但是结果总不是那么一番风顺的。如今使用 uuid 作为主键的情况已是主流,因此在给表增加分区时,出现了如下错误:

错误: A PRIMARY KEY must include all columns in the table's partitioning function

PRIMARY KEY必须包含表分区函数中的所有列

这表明 MySQL 需要分区列成为主键的一部分我们需要将 uid 和 create_time 组合成一个复合主键。对没看错,复合主键,也就是两字段确定唯一(这对我们的业务来说不是很友好,看到这里其实已经可以不用考虑了,毕竟生产环境的表结构和业务是不能这样改的。本着好奇和学习的心态,我还是进行了测试)。

因此我们创建表的代码如下:根据创建时间月份创建为12 个分区。

CREATE TABLE t_test (
    uid VARCHAR(32) NOT NULL,
    capital_uid VARCHAR(32) NOT NULL,
    type VARCHAR(32) NOT NULL,
    amount DECIMAL(12,4) NOT NULL,
    explain2 VARCHAR(255) NOT NULL,
    source VARCHAR(32) NOT NULL,
    source_type VARCHAR(32) NOT NULL,
    source_uid VARCHAR(32) NOT NULL,
    source_extra VARCHAR(255) DEFAULT NULL,
    settlement_uid VARCHAR(32) NOT NULL,
    liquidation_
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值