MySQL 5.5.14到_天分区模式的奇怪行为
我在示例查询中使用EXPLAIN,得到下一个结果:MySQL 5.5.14到_天分区模式的奇怪行为,mysql,Mysql,我在示例查询中使用EXPLAIN,得到下一个结果: DROP TABLE IF EXISTS temp; CREATE TABLE `temp` ( `CallID` bigint(8) unsigned NOT NULL, `InfoID` bigint(8) unsigned NOT NULL, `CallStartTime` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 PARTITION BY RANGE (TO_DAY
DROP TABLE IF EXISTS temp;
CREATE TABLE `temp` (
`CallID` bigint(8) unsigned NOT NULL,
`InfoID` bigint(8) unsigned NOT NULL,
`CallStartTime` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
PARTITION BY RANGE (TO_DAYS(CallStartTime))
(
PARTITION p0 VALUES LESS THAN (TO_DAYS('2013-06-01 00:00:00' )),
PARTITION p1 VALUES LESS THAN (TO_DAYS('2013-07-01 00:00:00')),
PARTITION p2 VALUES LESS THAN (TO_DAYS('2013-08-01 00:00:00')),
PARTITION p3 VALUES LESS THAN (TO_DAYS('2013-09-02 00:00:00'))) ;
EXPLAIN PARTITIONS SELECT*FROM temp,其中CallStartTime>='2013-07-13 00:10:06'和CallStartTime
在页面底部说:
2.使用DATE或DATETIME列作为分区列,按范围列对表进行分区。例如,可以直接使用联接列定义members表,如下所示:
因此,对于您的示例,它将如下所示:
按范围列划分(CallStartTime)(
分区p0值小于('2013-06-01 00:00:00'),
即使我第一眼也不明白为什么您的示例不起作用,但分区中似乎仍然存在一些bug
Bernd范围列不支持使用除日期或日期时间以外的日期或时间类型的分区列
日期和日期时间。
使用与日期或时间相关的其他数据类型的列不支持作为分区列。似乎相关。按范围更改表临时分区(CallStartTime)(分区p0值小于('2013-06-01 00:00:00'),分区p1值小于('2013-07-01 00:00:00'),分区p2值小于('2013-08-01 00:00:00')),分区p3值小于('2013-09-02 00:00:00');当我执行MySQL数据库错误:分区“p0”的值必须具有INT类型。范围列不支持使用使用日期或时间类型(日期或日期时间除外)的分区列。
EXPLAIN PARTITIONS SELECT * FROM temp where CallStartTime >= '2013-07-13 00:10:06' AND CallStartTime <= '2013-07-22 10:24:00'