Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个MySql查询(在分区表上)总是命中第一个分区?_Mysql_Partitioning - Fatal编程技术网

为什么这个MySql查询(在分区表上)总是命中第一个分区?

为什么这个MySql查询(在分区表上)总是命中第一个分区?,mysql,partitioning,Mysql,Partitioning,我正在使用分区创建一个表,如下所示: CREATE TABLE `alert` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `eventId` int(10) unsigned NOT NULL, `occurred` datetime NOT NULL, KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin /*!50100 PARTITI

我正在使用分区创建一个表,如下所示:

CREATE TABLE `alert` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `eventId` int(10) unsigned NOT NULL,
  `occurred` datetime NOT NULL,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
/*!50100 PARTITION BY RANGE (TO_DAYS(occurred))
(PARTITION 28_06 VALUES LESS THAN (735413) ENGINE = InnoDB,
 PARTITION 29_06 VALUES LESS THAN (735414) ENGINE = InnoDB,
 PARTITION 30_06 VALUES LESS THAN (735415) ENGINE = InnoDB,
 PARTITION 01_07 VALUES LESS THAN (735416) ENGINE = InnoDB,
 PARTITION 02_07 VALUES LESS THAN (735417) ENGINE = InnoDB,
 PARTITION 03_07 VALUES LESS THAN (735418) ENGINE = InnoDB,
 PARTITION 04_07 VALUES LESS THAN (735419) ENGINE = InnoDB,
 PARTITION 05_07 VALUES LESS THAN (735420) ENGINE = InnoDB,
 PARTITION 06_07 VALUES LESS THAN (735421) ENGINE = InnoDB,
 PARTITION 07_07 VALUES LESS THAN (735422) ENGINE = InnoDB) */
一切似乎都正常工作,但当我执行以下查询时:

EXPLAIN PARTITIONS SELECT * FROM alert WHERE occurred >= '2013-06-30' AND occurred <= '2013-07-01';
为什么分区
28_06
出现在这些结果中?当我非常清楚地选择开始时
2013-06-30

有什么想法吗


奇怪的是,以下查询似乎很好:

EXPLAIN PARTITIONS SELECT * FROM alert WHERE occurred >= '2013-07-02' AND occurred <= '2013-07-04';

看起来这是一个回归错误。我在Mac OS X 10.8上使用的是5.6.11版

解决方案是在开始时创建一个从未使用过的分区。i、 e:

PARTITION unused VALUES LESS THAN (0)

看起来这是一个回归错误。我在Mac OS X 10.8上使用的是5.6.11版

解决方案是在开始时创建一个从未使用过的分区。i、 e:

PARTITION unused VALUES LESS THAN (0)
PARTITION unused VALUES LESS THAN (0)