如果范围大于分区数,则不会对修剪工作进行分区吗?

时间:2014-11-14 11:31:35

标签: mysql database-partitioning


我的表中有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手册说如果范围之间的值大于分区数,则修剪不会发生。如果是这样,那么需要使用包含大量数据的表创建分区。由于我是分区的新手,我很困惑,如果我错了,请指导我,帮助我学习。

谢谢你:)

1 个答案:

答案 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.

希望它有所帮助!