Mysql 分区表中如何解决分区字段不是主键的情况?
请教各位大佬一个问题,mysql 在创建分区表的时候,似乎要求分区字段必须是主键或者是主键的一部分。
目前我在业务上遇到一个问题,有一张大的数据分层表,累加了很多数据,现在把最多的一级数据分离出一张新表,我想根据这一级数据中的时间类型(2024-01-01) 来设置分区,但是又要兼顾原有的业务逻辑,所以想保留原有主键(id) 的同时,建立分区,代码内容如下,求助各位大佬看看有没有什么好的解决方案。
CREATE TABLE orders (
order_id INT NOT NULL AUTO_INCREMENT,
order_date DATE NOT NULL,
customer_id INT,
amount DECIMAL(10, 2),
PRIMARY KEY (order_id), -- 设置order_id为主键
)
PARTITION BY RANGE (YEAR(order_date)) -- 根据order_date的年份进行分区
(
PARTITION p2021 VALUES LESS THAN (2022),
PARTITION p2022 VALUES LESS THAN (2023),
PARTITION p2023 VALUES LESS THAN (2024),
PARTITION p_future VALUES LESS THAN MAXVALUE
);
这样建会提示错误信息如下:
SQL 错误 [1503] [HY000]: A PRIMARY KEY must include all columns in the table's partitioning function (prefixed columns are not considered).
推荐文章: