mysql按日期分区

时间:2016-03-21 05:04:05

标签: mysql partitioning database-partitioning partition

我尝试在日期列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表有近十亿行数据,这几乎意味着我的查询根本不会(虚拟地)返回。因此,希望对表进行分区。

1 个答案:

答案 0 :(得分:2)

  

19.6.1对密钥,主密钥和唯一密钥进行分区

     

本节讨论使用分区键的关系   主键和唯一键。管理这种关系的规则可以   表示如下:分区中使用的所有列   分区表的表达式必须是每个唯一键的一部分   表可能有。

     

换句话说,表中的每个唯一键都必须使用每个列   表的分区表达式。 (这也包括表格   主键,因为它根据定义是唯一键。这个特别   案例将在本节后面讨论。)例如,每个案例   以下表创建语句无效:

参考:

https://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations-partitioning-keys-unique-keys.html