在性能优化中,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_

最低0.47元/天 解锁文章
2488






