按日期时间戳问题的范围进行mysql分区

时间:2012-08-09 00:16:36

标签: mysql

我遇到了在datetime列上使用partition by range对表进行分区的问题。

测试搜索结果仍处于完整分区扫描状态。

我在网上看到了一些有关此问题的帖子,但不确定是否有任何方法可以解决或绕过问题。

mysql服务器:Percona 5.5.24-55。

表:

id bigint(20)unsigned NOT NULL, time datatime unsigned NOT NULL, .... ....

KEY id_timeidtime

发动机= InnoDB的

分区声明:

alter table summary_201204 按范围划分(日(time)) 按键分区(id) 分区5( 分区p0值小于(6), 分区p1值小于(11), 分区p2值小于(16), 分区p3值小于(21), 分区p4值小于(26), 分区p5值小于(MAXVALUE));

检查: 解释分区select * from summary_201204 where time< '2012-07-21';

结果:p0_p0sp0,p0_p0sp1,p0_p0sp2,p0_p0sp3,p0_p0sp4,p1_p1sp0,p1_p1sp1,p1_p1sp2,p1_p1sp3,p1_p1sp4,p2_p2sp0,p2_p2sp1,p2_p2sp2,p2_p2sp3,p2_p2sp4,p3_p3sp0,p3_p3sp1,p3_p3sp2,p3_p3sp3,p3_p3sp4,p4_p4sp0,p4_p4sp1,p4_p4sp2 ,p4_p4sp3,p4_p4sp4,p5_p5sp0,p5_p5sp1,p5_p5sp2,p5_p5sp3,p5_p5sp4。

1 个答案:

答案 0 :(得分:0)

我认为答案是:访问enter link description here

因此,mysql官方网站中的文档对于分区所需的数据类型不够清楚。在这种情况下,如果表数据类型是datetime,那么我们应该使用to_seconds,而如果数据类型是DATE,那么我们可以使用YEA