Mysql,分区在日期范围内不起作用

标签 mysql mariadb

我正在尝试对表进行分区,这是它的结构:

CREATE TABLE IF NOT EXISTS `actions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uuid` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `username` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `event` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `obj_id` int(11) unsigned NOT NULL,
  `inline` text COLLATE utf8_unicode_ci NOT NULL,
  `meta` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`,`date`),
  KEY `event` (`event`),
  KEY `obj_id` (`obj_id`),
  KEY `username` (`username`),
  KEY `date` (`date`),
  KEY `user_date` (`username`,`date`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
 PARTITION BY RANGE ( UNIX_TIMESTAMP(date))
(PARTITION actions_0 VALUES LESS THAN (1209592800) ENGINE = InnoDB, # 2008-05-01
 PARTITION actions_images_1 VALUES LESS THAN (1212271200) ENGINE = InnoDB, # 2008-06-01
 [...]
 PARTITION actions_67 VALUES LESS THAN (1388530800) ENGINE = InnoDB,
 PARTITION actions_68 VALUES LESS THAN MAXVALUE ENGINE = InnoDB)

现在,当我选择特定日期时似乎没问题:

EXPLAIN PARTITIONS SELECT * FROM `actions` WHERE `date` = '2008-05-04 16:13:15' ;

+----+-------------+----------------+------------------
| id | select_type | table          | partitions       
+----+-------------+----------------+------------------
|  1 | SIMPLE      | actions        | actions_1 

但如果我执行此查询:

EXPLAIN PARTITIONS SELECT * FROM `actions` WHERE `date` > '2008-05-04 16:13:15' AND `date` < '2008-05-05 16:13:15';

Mysql扫描了所有的actions_N表,我做错了什么? 这是我第一次使用分区,但我按照手册进行操作,但找不到错误的地方。

谢谢!

最佳答案

好吧,这是一个 mysql 错误 http://bugs.mysql.com/bug.php?id=28928

关于Mysql,分区在日期范围内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258293/

相关文章:

php - 我将如何返回数组中与任何 $_POST 结果不匹配的任何项目

mysql - (MySQL) 如何在一个表中连接两列并显示结果?

mysql - SQL Server 将 varchar 数据转储到 mysql 中的文件加载,但不包括 mariadb

mysql - docker-compose 如何链接一个现有的 mariadb 而不是创建一个新的

php - 编写双连接来获取产品的子类别

mysql - 优化数据库更新

php - SQL 查询 PHP - 博客

mysql - MariaDB : Sorting with SUM, 组,DESC 未按我的预期工作。 (使用 Headfirst SQL 进行练习)

php - mysqldump 停止转换到 MariaDB - set-gtid-purged=OFF 问题?

mysql - 如何在检查子句中使用 CURDATE()?