0

我在使用日期时间列上的范围分区对表进行分区时遇到问题。

测试搜索结果仍然是全分区扫描。

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

mysql 服务器:Percona 5.5.24-55。

桌子:

idbigint(20) unsigned NOT NULL, timedatatime unsigned NOT NULL, .... ....

id_time( id, time)

引擎=InnoDB

分区声明:

alter table summary_201204 partition by range (day( time)) subpartition by key( id) subpartitions 5(partition p0 值小于(6),partition p1 值小于(11),partition p2 值小于(16),partition p3 值小于大于 (21),分区 p4 值小于 (26),分区 p5 值小于 (MAXVALUE) );

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

result: 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。

4

1 回答 1

0

我想这就是答案:访问在此处输入链接描述

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

于 2012-08-09T12:21:12.410 回答