我在使用日期时间列上的范围分区对表进行分区时遇到问题。
测试搜索结果仍然是全分区扫描。
我在网上看到了一些关于这个问题的帖子,但不确定是否有任何方法可以解决它或绕过这个问题。
mysql 服务器:Percona 5.5.24-55。
桌子:
id
bigint(20) unsigned NOT NULL,
time
datatime 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。