我尝试在日期列MV_DATE
上的mysql中创建分区DATE
这是查询 -
ALTER TABLE table_name PARTITION BY RANGE (TO_DAYS(MV_DATE))(PARTITION p0 VALUES LESS THAN (TO_DAYS('2015-08-31')));
我收到错误A PRIMARY KEY must include all columns in the table's partitioning function
MV_DATE
不是我桌子的主键。
我还尝试了ALTER TABLE JOB_VOL_SWH PARTITION BY RANGE ((MV_DATE))(PARTITION p0 VALUES LESS THAN (TO_DAYS('2015-08-31')));
,它会引发错误ERROR 1659 (HY000): Field 'JB_DATE' is of a not allowed type for this type of partitioning
我现在尝试了一些选项,但似乎都没有。
是否有按照日期范围创建分区的特殊方法? MYSQL表有近十亿行数据,这几乎意味着我的查询根本不会(虚拟地)返回。因此,希望对表进行分区。
答案 0 :(得分:2)
19.6.1对密钥,主密钥和唯一密钥进行分区
本节讨论使用分区键的关系 主键和唯一键。管理这种关系的规则可以 表示如下:分区中使用的所有列 分区表的表达式必须是每个唯一键的一部分 表可能有。
换句话说,表中的每个唯一键都必须使用每个列 表的分区表达式。 (这也包括表格 主键,因为它根据定义是唯一键。这个特别 案例将在本节后面讨论。)例如,每个案例 以下表创建语句无效:
https://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations-partitioning-keys-unique-keys.html