我的表中有1500万行,每4秒钟就会有数据。所以,我决定在每天制作分区如下
ALTER TABLE vehicle_gps PARTITION BY RANGE(UNIX_TIMESTAMP(gps_time)) ( PARTITION p01 VALUES LESS THAN (UNIX_TIMESTAMP('2014-01-01 00:00:00')), . . . PARTITION p365 VALUES LESS THAN (UNIX_TIMESTAMP('2015-01-01 00:00:00')));
我必须制作365个分区,如图所示。每个分区日包含大约10万行的数据 如果我想通过提供查询来获取数据
SELECT gps_time FROM vehicle_gps WHERE gps_time BETWEEN '2014-05-01 00:00:00' AND '2014-05-06 00:00:00';
我发现分区修剪没有发生。 MySQL手册说如果范围之间的值大于分区数,则修剪不会发生。如果是这样,那么需要使用包含大量数据的表创建分区。由于我是分区的新手,我很困惑,如果我错了,请指导我,帮助我学习。
谢谢你:)
答案 0 :(得分:0)
它只适用于MySQL Documentation
中的日期和小提取Pruning can be used only on integer columns of tables partitioned by HASH or KEY. For example, this query cannot use pruning because dob is a DATE column:
SELECT * FROM t4 WHERE dob >= '2001-04-14' AND dob <= '2005-10-15';
However, if the table stores year values in an INT column, then a query having WHERE year_col >= 2001 AND year_col <= 2005 can be pruned.
希望它有所帮助!