一、现有表转为分区表
下⾯以此为示例:ORDER_INFO_COPY 为原数据表CREATE_TIME 作为分区键按⽉分区最好在低峰期操作,或者停服操作。1.1 修改主键索引
-- 删除原主键索引 ALTER TABLE ORDER_INFO_COPY DROP PRIMARY KEY; -- 重新创建主键索引 ALTER TABLE ORDER_INFO_COPY ADD PRIMARY KEY (ID, CREATE_TIME);
1.2 修改表结构
修改前可先查询现有数据的分布情况,按需要创建分区(可以预创建些分区,⽐如⽬前数据到 11⽉,可以把12⽉的分区也创建出来)SELECT DATE_FORMAT(CREATE_TIME, '%Y-%m') DATE, COUNT(ID) NUMS FROM ORDER_INFO_COPY GROUP BY DATE_FORMAT(CREATE_TIME, '%Y-%m');
DATE NUMS 2022-06 443 2022-07 389 2022-08 100 2022-09 427 2022-10 351 查询数据可知⽬前数据覆盖5个分区,创建时可以把11⽉份的分区也创建出来1.3 分区
ALTER TABLE ORDER_INFO_COPY PARTITION BY RANGE COLUMNS(CREATE_TIME) ( PARTITION P202206 VALUES LESS THAN ('2022-07-01'), PARTITION P202207 VALUES LESS THAN ('2022-08-01'), PARTITION P202208 VALUES LESS THAN ('2022-09-01'), PARTITION P202209 VALUES LESS THAN ('2022-10-01'), PARTITION P202210 VALUES LESS THAN ('2022-11-01'), PARTITION P202211 VALUES LESS THAN ('2022-12-01') );
分区 ySql 表分区