mysql5.6分区表区间查询不走分区

yeti_38 发布于 2016/06/09 18:50
阅读 631
收藏 0

@ToB蓝波湾 你好,想跟你请教个问题:

mysql5.6分区表区间查询不走分区,mysql版本位5.6.24,64位,建表语句为:

CREATE TABLE test_part_12month
         (  c1 int default NULL,
      c2 varchar(30) default NULL,
     c3 datetime default NULL) engine=innodb
        partition by range (month(c3))
    (
   PARTITION p1 VALUES LESS THAN (month('2016-02-01')),
   PARTITION p2 VALUES LESS THAN (month('2016-03-01')),
   PARTITION p3 VALUES LESS THAN (month('2016-04-01')),
   PARTITION p4 VALUES LESS THAN (month('2016-05-01')),
   PARTITION p5 VALUES LESS THAN (month('2016-06-01')),
   PARTITION p6 VALUES LESS THAN (month('2016-07-01')),
   PARTITION p7 VALUES LESS THAN (month('2016-08-01')),
   PARTITION p8 VALUES LESS THAN (month('2016-09-01')),
   PARTITION p9 VALUES LESS THAN (month('2016-10-01')),
   PARTITION p10 VALUES LESS THAN (month('2016-11-01')),
   PARTITION p11 VALUES LESS THAN (month('2016-12-01')),
   PARTITION p12 VALUES LESS THAN MAXVALUE 
   );
查询语句1为:

    explain partitions
     select count(*) from test_part_12month where
    c3> date('2016-06-01') and c3 < date('2016-06-30');

查询语句2为:

explain partitions
select count(*) from test_part_12month where    c3= date('2016-06-09');

以下是问题补充:

@yeti_38:数据库确认支持分区功能 (2016/06/09 18:52)
加载中
0
一条大河波浪宽
一条大河波浪宽
感谢对我的信任,我不太确定,你把查询语句中的date函数去掉试试
一条大河波浪宽
一条大河波浪宽
额,我安装下mysql试试。。
yeti_38
yeti_38
感谢你的回复,不行!
0
h
huyet

partition by range 不能用month,只能用year,to_days,to_seconds等,你把分区函数改成partition by range (to_days(c3))(

 PARTITION p1 VALUES LESS THAN (to_days('2016-02-01')),

.....试试

h
huyet
回复 @yeti_38 : 没那么多个,to_days(每个月1号),1年是12个区
yeti_38
yeti_38
我希望要的分区表是按月分区,子分区按日期分区
yeti_38
yeti_38
确实可以了,不过每年的数据都要弄365个表,可是够呛
返回顶部
顶部