mysql – 如何为当年的每个月创建一个分区

我想按“MONTH”对数据进行分区

我在试试这个,

ALTER TABLE t1 PARTITION BY RANGE(TO_DAYS(FROM_UNIXTIME(transaction_date)))(
PARTITION JAN VALUES LESS THAN (TO_DAYS('2013-02-01')),PARTITION FEB VALUES LESS THAN (TO_DAYS('2013-03-01')),PARTITION MAR VALUES LESS THAN (TO_DAYS('2013-04-01')),PARTITION APR VALUES LESS THAN (TO_DAYS('2013-05-01')),PARTITION MAY VALUES LESS THAN (TO_DAYS('2013-06-01')),PARTITION JUN VALUES LESS THAN (TO_DAYS('2013-07-01')),PARTITION JUL VALUES LESS THAN (TO_DAYS('2013-08-01')),PARTITION AUG VALUES LESS THAN (TO_DAYS('2013-09-01')),PARTITION SEP VALUES LESS THAN (TO_DAYS('2013-10-01')),PARTITION `OCT` VALUES LESS THAN (TO_DAYS('2013-11-01')),PARTITION NOV VALUES LESS THAN (TO_DAYS('2013-12-01')),PARTITION `DEC` VALUES LESS THAN (TO_DAYS('2014-01-01'))

);

transaction_date INT NOT NULL //store date by UNIX_TIMESTAMP()

错误代码:1564
不允许使用此分区功能

如何为当年的每个月创建一个分区?

最佳答案
这可能是bug或限制.

对于每月分区,您可以尝试这样做:

SQLFiddle Demo

ALTER TABLE t1 PARTITION BY RANGE(transaction_date)(
PARTITION JAN VALUES LESS THAN (UNIX_TIMESTAMP('2013-02-01')),PARTITION FEB VALUES LESS THAN (UNIX_TIMESTAMP('2013-03-01')),PARTITION MAR VALUES LESS THAN (UNIX_TIMESTAMP('2013-04-01')),PARTITION APR VALUES LESS THAN (UNIX_TIMESTAMP('2013-05-01')),PARTITION MAY VALUES LESS THAN (UNIX_TIMESTAMP('2013-06-01')),PARTITION JUN VALUES LESS THAN (UNIX_TIMESTAMP('2013-07-01')),PARTITION JUL VALUES LESS THAN (UNIX_TIMESTAMP('2013-08-01')),PARTITION AUG VALUES LESS THAN (UNIX_TIMESTAMP('2013-09-01')),PARTITION SEP VALUES LESS THAN (UNIX_TIMESTAMP('2013-10-01')),PARTITION `OCT` VALUES LESS THAN (UNIX_TIMESTAMP('2013-11-01')),PARTITION NOV VALUES LESS THAN (UNIX_TIMESTAMP('2013-12-01')),PARTITION `DEC` VALUES LESS THAN (UNIX_TIMESTAMP('2014-01-01'))
);

如果您有一个以DATE作为数据类型的列,那么您可以尝试使用每月分区内的每日分区:
尝试在MysqL中使用sub-partitioning

SQLFiddle Demo

ALTER TABLE t1 
PARTITION BY RANGE( MONTH(FROM_UNIXTIME(transaction_date) )
SUBPARTITION BY HASH( DAY(FROM_UNIXTIME(transaction_date)) )
SUBPARTITIONS 31 (
    PARTITION p0 VALUES LESS THAN (2),PARTITION p1 VALUES LESS THAN (3),PARTITION p2 VALUES LESS THAN (4),PARTITION p3 VALUES LESS THAN (5),PARTITION p4 VALUES LESS THAN (6),PARTITION p5 VALUES LESS THAN (7),PARTITION p6 VALUES LESS THAN (8),PARTITION p7 VALUES LESS THAN (9),PARTITION p8 VALUES LESS THAN (10),PARTITION p9 VALUES LESS THAN (11),PARTITION p10 VALUES LESS THAN (12),PARTITION p11 VALUES LESS THAN MAXVALUE
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


mysql外键怎么用?Mysql数据库外键的使用介绍(图文+视频)
mysql怎么创建视图?(图文+视频)
怎么修改Mysql数据表中的视图
phpMyadmin导出备份数据库文件的步骤详解(附视频)
怎么给Mysql数据表添加外键?(图文+视频)
phpMyadmin导入数据库sql文件的方法详解(附视频)
如何查询mysql数据表中的视图
Mysql怎么删除外键?(图文+视频)
mysql数据表视图是什么意思?有哪些用处?(图文+视频)
mysql数据库怎么创建外键?(图文+视频)
Navicat怎样导入导出sql文件?(图文步骤+视频教程)
phpMyAdmin最新下载安装教程(附视频)
怎么使用phpmyadmin对数据库、数据表进行增删改查等操作?(图文+视频)
Mysql外键是什么?有哪些用处?(图文+视频)
怎么使用Mysql数据表中的蠕虫复制
Mysql事务提交及事务回滚是什么意思
怎么向Mysql视图中增加新数据
not exists用法
怎么删除mysql表中数据
Mysql数据表中手动事务的回滚点是什么