你的位置:首页 > 软件开发 > 数据库 > MySQL基于时间字段进行分区的方案总结

MySQL基于时间字段进行分区的方案总结

发布时间:2015-12-09 18:00:08
MySQL支持的分区类型一共有四种:RANGE,LIST,HASH,KEY。其中,RANGE又可分为原生RANGE和RANGE COLUMNS,LIST分为原生LIST和LIST COLUMNS,HASH分为原生HASH和LINEAR HASH,KEY包含原生KEY和LI ...

MySQL支持的分区类型一共有四种:RANGE,LIST,HASH,KEY。其中,RANGE又可分为原生RANGE和RANGE COLUMNS,LIST分为原生LIST和LIST COLUMNS,HASH分为原生HASH和LINEAR HASH,KEY包含原生KEY和LINEAR HASH。关于这些分区之间的差别,改日另写文章进行阐述。

最近,碰到一个需求,要对表的时间字段(类型:datetime)基于天进行分区。于是遍历MySQL官方文档分区章节,总结如下:

 

实现方式

主要是以下几种:

1. 基于RANGE

2. 基于RANGE COLUMNS

3. 基于HASH

 

测试数据 

为了测试以上三种方案,特构造了100万的测试数据,放在test表中,test表只有两列:id和hiredate,其中hiredate只包含10天的数据,从2015-12-01到2015-12-10。具体信息如下:

mysql> show create table test\G*************************** 1. row ***************************    Table: testCreate Table: CREATE TABLE `test` ( `id` int(11) DEFAULT NULL, `hiredate` datetime DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin11 row in set (0.00 sec)mysql> select min(hiredate),max(hiredate) from test;+---------------------+---------------------+| min(hiredate)    | max(hiredate)    |+---------------------+---------------------+| 2015-12-01 00:00:00 | 2015-12-10 23:59:56 |+---------------------+---------------------+1 row in set (0.44 sec)mysql> select date(hiredate),count(*) from test group by date(hiredate);+----------------+----------+| date(hiredate) | count(*) |+----------------+----------+| 2015-12-01   |  99963 || 2015-12-02   |  100032 || 2015-12-03   |  100150 || 2015-12-04   |  99989 || 2015-12-05   |  99908 || 2015-12-06   |  99897 || 2015-12-07   |  100137 || 2015-12-08   |  100171 || 2015-12-09   |  99851 || 2015-12-10   |  99902 |+----------------+----------+10 rows in set (0.98 sec)

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:MySQL基于时间字段进行分区的方案总结

关键词:MYSQL

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。