惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
MyScale Blog
MyScale Blog
A
About on SuperTechFans
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
The Cloudflare Blog
F
Fortinet All Blogs
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
罗磊的独立博客
量子位
有赞技术团队
有赞技术团队
V
V2EX
Engineering at Meta
Engineering at Meta

博客园 - 卡卡西村长

QT使用linuxdeployqt打包 统计vertica表的行数 基于QScintilla项目实现SQL编辑器 Vertica中的group_concat函数 查看mysql当前事务锁并kill vscode中文乱码问题及几种常见的解决方案 改善[Vertica] current ResultSet because its buffer(8192) is full的错误 通过 phantomjs抓取仁医在线的练习题 notepad++ 配置fasm汇编环境 springboot动态启用RabbitMQ消费Listener 排查tomcat服务器CPU占用率过高的问题 FFMPEG把图片序列合成为视频 统计nginx日志中的ipv4和ipv6占比 vertica性能优化汇总 oracle unwrap解密工具 windows10上安装OpenSSL_1.1.1d_x64 centos7上安装phantomjs并对页面截屏 如何用Java Socket实现一个简单的Redis客户端 cenos上通过yum安装mariadb
mysql日期字段分区索引
卡卡西村长 · 2022-01-06 · via 博客园 - 卡卡西村长

创建测试表:

CREATE TABLE `test_report` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`t_date` int(8) NOT NULL COMMENT '统计日期yyyymmdd',
`cust_no` varchar(100) DEFAULT NULL COMMENT '客户号',
`amount` decimal(26,6) DEFAULT NULL COMMENT '金额',
PRIMARY KEY (`id`,`t_date`),
KEY `idx_test_report_custno` (`cust_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试报表'

表要满足两个要求
1、分区字段必须位于联合主键中,例如,分区字段是t_date,联合主键就是id和t_date。
2、分区字段必须是整型。

添加分区索引:

ALTER TABLE test_report PARTITION BY RANGE (t_date)(
    PARTITION p20200101 VALUES LESS THAN (20200101),
    PARTITION p20200201 VALUES LESS THAN (20200201),
    PARTITION p20200301 VALUES LESS THAN (20200301),
    PARTITION p20200401 VALUES LESS THAN (20200401),
    PARTITION p20200501 VALUES LESS THAN (20200501),
    PARTITION p20200601 VALUES LESS THAN (20200601),
    PARTITION p20200701 VALUES LESS THAN (20200701),
    PARTITION p20200801 VALUES LESS THAN (20200801),
    PARTITION p20200901 VALUES LESS THAN (20200901),
    PARTITION p20201001 VALUES LESS THAN (20201001),
    PARTITION p20201101 VALUES LESS THAN (20201101),
    PARTITION p20201201 VALUES LESS THAN (20201201),
    
    PARTITION p20210101 VALUES LESS THAN (20210101),
    PARTITION p20210201 VALUES LESS THAN (20210201),
    PARTITION p20210301 VALUES LESS THAN (20210301),
    PARTITION p20210401 VALUES LESS THAN (20210401),
    PARTITION p20210501 VALUES LESS THAN (20210501),
    PARTITION p20210601 VALUES LESS THAN (20210601),
    PARTITION p20210701 VALUES LESS THAN (20210701),
    PARTITION p20210801 VALUES LESS THAN (20210801),
    PARTITION p20210901 VALUES LESS THAN (20210901),
    PARTITION p20211001 VALUES LESS THAN (20211001),
    PARTITION p20211101 VALUES LESS THAN (20211101),
    PARTITION p20211201 VALUES LESS THAN (20211201),
    
    
    PARTITION p20220101 VALUES LESS THAN (20220101),
    PARTITION p20220201 VALUES LESS THAN (20220201),
    PARTITION p20220301 VALUES LESS THAN (20220301),
    PARTITION p20220401 VALUES LESS THAN (20220401),
    PARTITION p20220501 VALUES LESS THAN (20220501),
    PARTITION p20220601 VALUES LESS THAN (20220601),
    PARTITION p20220701 VALUES LESS THAN (20220701),
    PARTITION p20220801 VALUES LESS THAN (20220801),
    PARTITION p20220901 VALUES LESS THAN (20220901),
    PARTITION p20221001 VALUES LESS THAN (20221001),
    PARTITION p20221101 VALUES LESS THAN (20221101),
    PARTITION p20221201 VALUES LESS THAN (20221201),
    
    PARTITION pmax VALUES LESS THAN MAXVALUE
)


如果想删除指定的分区,可以执行如下SQL:

ALTER TABLE test_report DROP PARTITION p20221201 ;

确认分区索引是否添加好了:

SELECT
  partition_name,
  partition_expression,
  partition_description,
  table_rows
FROM information_schema.partitions
WHERE table_schema='test'
  AND table_name='test_report'