1、创建测试表

CREATE TABLE `t_test` (
`id` INT (11),
`dates` DATETIME
);
ALTER TABLE t_test ADD PRIMARY KEY (id);
ALTER TABLE t_test MODIFY id INT AUTO_INCREMENT;

2、创建一个生成测试数据的存储过程

我这里是生成n条2018年的数据(这个生成的时间有bug、我这里不管了,只是用来测试)

DELIMITER //
CREATE PROCEDURE `add_vote_memory`(n INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE datess VARCHAR(256);
WHILE (i <= n ) DO
-- 随机时间 这里生成的都是2018年的
SELECT CONCAT(2018,'-',LPAD(FLOOR(1 + (RAND() * 12)),2,0),'-',LPAD(FLOOR(1 + (RAND() * 28)),2,0)) INTO datess;
INSERT INTO t_test(dates ) VALUES (datess);
SET i=i+1;
END WHILE;
END //

3、生成测试数据

-- 调用存储过程 生成500000条
CALL add_vote_memory(500000);

4、创建分区表

CREATE TABLE t_range_test (
id INT,
dates DATETIME
)PARTITION BY RANGE COLUMNS ( dates ) (
-- 第一组小于2018-01-01的
PARTITION p1 VALUES LESS THAN ( '' ),
PARTITION p2 VALUES LESS THAN ( '' ),
PARTITION p3 VALUES LESS THAN ( '' ),
PARTITION p4 VALUES LESS THAN ( '' ),
PARTITION p5 VALUES LESS THAN ( '' ),
PARTITION p6 VALUES LESS THAN ( '' ),
PARTITION p7 VALUES LESS THAN ( '' ),
PARTITION p8 VALUES LESS THAN ( '' ),
PARTITION p9 VALUES LESS THAN ( '' ),
PARTITION p10 VALUES LESS THAN ( '' ),
PARTITION p11 VALUES LESS THAN ( '' ),
PARTITION p12 VALUES LESS THAN ( '' ),
-- 最后一组小于2019-01-01大于2018-12-01的
PARTITION p13 VALUES LESS THAN ( '' )
);

5、把上面测试表的数据插入到分区表中

INSERT INTO t_range_test SELECT * FROM t_test;

6、查看执行计划、结果看PARTITIONS列

EXPLAIN PARTITIONS SELECT * FROM t_range_test WHERE dates >= '' AND dates<='';

  结果:

7、查看表分区状况

-- 查询这个表有多少分区
-- 查询每一个分区对应的数量
SELECT t.`PARTITION_NAME`,t.`SUBPARTITION_NAME`,t.`TABLE_ROWS` FROM information_schema.`PARTITIONS` t WHERE t.`TABLE_NAME` = 't_range_test';

8、重新定义表分区

-- 给表重新定义分区
ALTER TABLE t_range_test PARTITION BY RANGE COLUMNS ( dates ) (
-- 第一组小于2018-01-01的
PARTITION p1 VALUES LESS THAN ( '' ),
PARTITION p2 VALUES LESS THAN ( '' ),
PARTITION p3 VALUES LESS THAN ( '' ),
PARTITION p4 VALUES LESS THAN ( '' ),
PARTITION p5 VALUES LESS THAN ( '' ),
PARTITION p6 VALUES LESS THAN ( '' ),
PARTITION p7 VALUES LESS THAN ( '' ),
PARTITION p8 VALUES LESS THAN ( '' ),
PARTITION p9 VALUES LESS THAN ( '' ),
PARTITION p10 VALUES LESS THAN ( '' ),
PARTITION p11 VALUES LESS THAN ( '' ),
PARTITION p12 VALUES LESS THAN ( '' ),
PARTITION p13 VALUES LESS THAN ( '' ),
-- 最后一组小于2020-01-01大于2019-01-01的
PARTITION p14 VALUES LESS THAN ( '' )
);

Mysql时间范围分区(RANGE COLUMNS方式)的更多相关文章

  1. Mysql表分区几种方式

    自5.1开始对分区(Partition)有支持,一张表最多1024个分区 查询分区数据: SELECT * from table PARTITION(p0) = 水平分区(根据列属性按行分)= 举个简 ...

  2. 细聊MySQL的分区功能

    此篇主要介绍下MySQL的分区功能.我们分别从分区的概念.分区对于MySQL应用的优点.分区的类别及设置来和大家一起探讨下MySQL的分区. 什么是分区? MySQL在未启用分区功能时,数据库的单个表 ...

  3. MySQL表分区技术

    MySQL表分区技术 MySQL有4种分区类型: 1.RANGE 分区 - 连续区间的分区 - 基于属于一个给定连续区间的列值,把多行分配给分区: 2.LIST 分区 - 离散区间的分区 - 类似于按 ...

  4. MYSQL的分区字段,必须包含在主键字段内

    MYSQL的分区字段,必须包含在主键字段内   MYSQL的分区字段,必须包含在主键字段内 在对表进行分区时,如果分区字段没有包含在主键字段内,如表A的主键为ID,分区字段为createtime ,按 ...

  5. MySQL partition分区I

    http://blog.csdn.net/binger819623/article/details/5280267 一.        分区的概念二.        为什么使用分区?(优点)三.    ...

  6. MySQL 表分区A

    在MySQL中表的分区类型总的来说有四种: 第一种:range分区.基于一个给定的区间范围,把数据分配到不同的分区. 第二种:list   分区.基本枚举的值列表进行分区. 第三种:hast 分区.基 ...

  7. mysql 表分区技术

    表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分.从逻辑上看,只有一张表,但是底层却是由多个物理分区组成. 表分区有什么好处: a.分区表的数据可以分布在不同的物理设备上, ...

  8. mysql表分区实战

    一,什么是数据库分区以mysql为例,mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面 (可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件 ...

  9. mysql数据库分区功能及实例详解

    分区听起来怎么感觉是硬盘呀,对没错除了硬盘可以分区数据库现在也支持分区了,分区可以解决大数据量的处理问题,下面一起来看一个mysql数据库分区功能及实例详解   一,什么是数据库分区 前段时间写过一篇 ...

随机推荐

  1. JDK8~JDK11的新特性

    #JDK 1.8 新特性接口中的静态方法 只能由接口自己调用 接口中的默认方法 可以不被覆盖 #JDK 1.9 新特性(可能在JDK8中被忽略了,没来得及加)接口可以定义私有方法,但是只能让自己调用, ...

  2. Python 使用 requests 模块发送请求的使用及封装

    一.requests 模块基本使用 1.准备接口的URL.请求参数.请求头 # 1. 构造注册.登录.充值请求的url register_url = "注册url" login_u ...

  3. String+、intern()、字符串常量池

    字符串连接符 "+"及字符串常量池实验.字符串final属性 结果预览 public class StrTest{ public static void main(String[] ...

  4. 《新标准C++程序设计》4.7-4.9(C++学习笔记17)

    一.重载类型强制转换运算符 在C++中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符.类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数.经过 ...

  5. Fr3设置图片打印

    见 fr3的文件内容,为xml <?xml version="1.0" encoding="utf-8"?> <TfrxReport Vers ...

  6. 云服务器CentOS7系统环境配置(jdk和tomcat)

    配置jdk 下载与安装 如果没有安装wget,首先安装wget工具 yum -y install wget 安装完成后,在网上找到jdk的下载链接,可以在官网找点击此处到官网下载,如果官网下载慢也可以 ...

  7. Arch系linux配置Go开发环境

    1. 下载go $ sudo pacman -S go 下载后系统会将go安装在/usr/lib/go目录下 2. 配置一些环境变量 一共需要三个环境变量,分别为: GOROOT -> go语言 ...

  8. ExcelPackage导入导出,命名空间一定要是EPPlus

    1.引入EPPlus.dll,旧版的是OfficeOpenXml.dll,最好使用EPPlus2.调用 string path = UploadExecl(batchUpload.BinaryExce ...

  9. .nerCore-RabbitMQDemo消息队列

    1.定义:MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.MQ是消费- ...

  10. 030-PHP日期查询函数

    <?php , , ))//检查日期函数 { print("2,18,1970 :" . "这是一个正确的日期格式"); } else { print(& ...