【发布时间】:2011-05-23 06:27:27
【问题描述】:
我想按日期时间列对 mysql 表进行分区。一天一个分区。建表脚本是这样的:
CREATE TABLE raw_log_2011_4 (
id bigint(20) NOT NULL AUTO_INCREMENT,
logid char(16) NOT NULL,
tid char(16) NOT NULL,
reporterip char(46) DEFAULT NULL,
ftime datetime DEFAULT NULL,
KEY id (id)
) ENGINE=InnoDB AUTO_INCREMENT=286802795 DEFAULT CHARSET=utf8
PARTITION BY hash (day(ftime)) partitions 31;
但是当我选择某天的数据时,找不到分区。select语句是这样的:
explain partitions select * from raw_log_2011_4 where day(ftime) = 30;
当我使用另一个语句时,它可以找到分区,但我无法选择某一天的数据。
explain partitions select * from raw_log_2011_4 where ftime = '2011-03-30';
有没有人告诉我如何选择某一天的数据并利用分区。谢谢!
【问题讨论】:
-
这是一篇关于 MySQL / MariaDB 分区的非常好的文章。也许这已经回答了来这里的人的所有问题:“不要使用 PARTITION,除非你有 >1M 行”mariadb.com/kb/en/library/partition-maintenance
标签: mysql datetime hash database-partitioning