Mysql时间范围分区(RANGE COLUMNS方式)
2024-09-30 18:34:01
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 ( '' )
);
最新文章
- linux文件目录详解
- JS表单验证插件(支持Ajax验证)
- 如何让IE8的菜单栏调到最上方
- python练习程序(c100经典例16)
- PHP 怎么随机获取数组里面的值
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测下
- C#索引器的应用:自已写一个表格
- Apriori算法Python实现
- Leetcode题解(二)
- Nginx集群之SSL证书的WebApi身份验证
- 多个PVSS数据点属性读写的优化处理
- Shell命令-文件及内容处理之grep(egrep)、join
- [LeetCode] 139. Word Break_ Medium tag: Dynamic Programming
- 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程
- Burp Scanner Report
- Docker安装管理界面portainer
- USACO 2012 December ZQUOJ 24128 Wifi Setup(动态dp)
- 【转】工作中使用Trepn Power Profiler的应用总结
- 解决 /dev/mapper/* 100%
- HTTP cookies 详解(国外一位大牛的文章)