mysql 分区操作

发布于:2024-08-08 ⋅ 阅读:(131) ⋅ 点赞:(0)

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;


网站公告

今日签到

点亮在社区的每一天
去签到