我试图改变现有的表增加一年,周子分区,就像这样:MySQL的ALTER TABLE与子分区失败
CREATE TABLE test_table(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
dtime DATETIME NOT NULL);
ALTER TABLE test_table
PARTITION BY RANGE (YEAR(dtime))
SUBPARTITION BY RANGE(WEEK(dtime)) (
PARTITION y0 VALUES LESS THAN (2013) (
SUBPARTITION w0 VALUES LESS THAN (2),
...
SUBPARTITION w52 VALUES LESS THAN (54)
),
PARTITION y1 VALUES LESS THAN (2014) (
SUBPARTITION w0 VALUES LESS THAN (2),
...
SUBPARTITION w52 VALUES LESS THAN (54)
),
PARTITION y2 VALUES LESS THAN (2015) (
SUBPARTITION w0 VALUES LESS THAN (2),
...
SUBPARTITION w52 VALUES LESS THAN (54)
),
PARTITION y3 VALUES LESS THAN (2016) (
SUBPARTITION w0 VALUES LESS THAN (2),
...
SUBPARTITION w52 VALUES LESS THAN (54)
)
);
然而,这给了我的含糊和无益的响应:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RANGE( WEEK(DTIME)) (
PARTITION y0 VALUES LESS THAN (2013) (
SUBPARTITION ' at line 3
我检查了文档:MySQL ALTER TABLE Partition operations和MySQL RANGE and LIST Partitions。但是,这些都没有描述如何修改表来创建子分区。
我的问题的第二部分是对这个分区方案的反馈。进入的数据是每分钟记录的传感器读数,最常见的查询操作是针对上周的数据。我认为这应该会大大加快我的查询速度,因为“WHERE dtime> date”非常常见,无需手动将数据定期移出表格到归档表格中。