mysql分区的使用

以常用的RANGE分区为例,还有其他分区类型LIST、HASH分区、KEY分区

创建表并指定分区(脚本不要分开执行):year小于2019年的放在p2018分区、大于2019小于2020放在分区p2019……     

CREATE TABLE my_table (
id INT NOT NULL AUTO_INCREMENT,
year INT NOT NULL,
data VARCHAR(255),
PRIMARY KEY (id, year)

PARTITION BY RANGE (year)(
partition p2018 values less than(2019),
partition p2019 values less than(2020),
partition p2020 values less than(2021),
partition p2021 values less than(2022),
partition p2022 values less than(2023),
partition p2023 values less than(2024),
PARTITION p9999 VALUES LESS THAN MAXVALUE
);

-- 建表时没有建分区,建完表之后添加分区:

ALTER TABLE my_table PARTITION BY RANGE (year) (
partition p2018 values less than(2019),
partition p2019 values less than(2020),
partition p2020 values less than(2021),
partition p2021 values less than(2022),
partition p2022 values less than(2023),
partition p2023 values less than(2024),
PARTITION p9999 VALUES LESS THAN MAXVALUE
);

-- 删除分区(数据还在):

ALTER TABLE my_table remove partitioning;

-- 删除分区(指定分区名),分区里面的数据也会被删除
alter table my_table drop partition p2024;

-- 检查分区状态是否正常
ALTER TABLE my_table CHECK PARTITION p2021,p2022;

-- 查询指定的分区
select * from my_table partition(p2020) where year = 2020;

-- 查询表中的分区信息
select * from information_schema.partitions where table_name = 'my_table' 


-- explain查看执行计划,可以看到查询的分区
explain select * from my_table where  year = 2020;

-- 添加分区
alter table my_table add partition(partition p2024 values less than(2025));
 

-- 重构分区,数据转移到新的分区(s0和s1是当前分区名)
ALTER TABLE my_table REORGANIZE PARTITION s0,s1
   INTO(partition p2020 values less than(2020),partition p2025 values less than(2025));
 

可参考博客:https://www.cnblogs.com/qiyunhai/p/13729824.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值