mysql 分区管理

1。新建分区

mysql 没有全局唯一索引,因此所有涉及唯一索引的都需要加上分区键,因此要做好权衡,键分区不一定能提高效率哦,建分区的主要目的是为了分区查询和删除数据

--将CREATE_TIME 加入主键
ALTER TABLE your_table DROP PRIMARY KEY, ADD PRIMARY KEY (id,create_datetime);

-- 以下是给出两种不同的方式

--给表建分区  根据函数
ALTER TABLE your_table;
PARTITION BY RANGE (YEAR(CREATE_TIME)) (
    PARTITION p1 VALUES LESS THAN (2020),
    PARTITION p2 VALUES LESS THAN (2021),
    PARTITION p3 VALUES LESS THAN (2022),
    PARTITION p4 VALUES LESS THAN (2024)
);


--给表建分区  根据字段
ALTER TABLE your_table;
PARTITION BY RANGE COLUMNS(CREATE_TIME) (
    PARTITION p1 VALUES LESS THAN (2020),
    PARTITION p2 VALUES LESS THAN (2021),
    PARTITION p3 VALUES LESS THAN (2022),
    PARTITION p4 VALUES LESS THAN (2024)
);

2.追加分区

ALTER TABLE your_table
ADD PARTITION (
    PARTITION period_202601  VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB
);

3.删除分区

--删除所有分区
ALTER TABLE your_table_name REMOVE PARTITIONING;;

--删除A分区
ALTER TABLE your_table_name DROP PARTITION A;

4.查询DDL

SHOW CREATE TABLE your_table;

5.查询一个表的分区信息

SELECT *
FROM information_schema.PARTITIONS
WHERE TABLE_NAME = 'your_table';

6.查询一个数据库哪些表有分区

SELECT distinct TABLE_NAME 
FROM information_schema.PARTITIONS
WHERE PARTITION_NAME  is not NULL;

7.查询一个数据库有多少表


SELECT *
FROM information_schema.tables
WHERE table_schema = 'your_database_name';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值