跳转至

MySQL表分区

分区操作

新增分区

ALTER TABLE your_table_name
PARTITION BY RANGE (YEAR_NUMBER)(
    PARTITION p2010 VALUES LESS THAN (2011),
    PARTITION p2011 VALUES LESS THAN (2012),
    PARTITION p2012 VALUES LESS THAN (2013),
    ...
    PARTITION p2049 VALUES LESS THAN (2050),
    PARTITION pMax VALUES LESS THAN MAXVALUE
);

删除分区

-- 删除名为 p2022 的分区
ALTER TABLE test_data DROP PARTITION p2022;

重新组织分区并删除不需要的分区:使用 REORGANIZE PARTITION 子句,并在子句中指定要保留的分区和需要删除的分区。

-- 删除名为 p2022 的分区并将其与相邻的分区合并
ALTER TABLE test_data REORGANIZE PARTITION p2022 INTO (
  PARTITION p2021 VALUES LESS THAN (2022),
  PARTITION p2023 VALUES LESS THAN (2024)
);

只删除分区,不删除数据

-- 创建一个新的空分区,该分区将用于存储你想要保留的数据
ALTER TABLE test_data ADD PARTITION (PARTITION p2022_new VALUES LESS THAN (2023));
-- 将数据从旧分区移动到新分区,在 REORGANIZE PARTITION 子句中,指定要保留的旧分区和要移动的数据范围。
ALTER TABLE oa_data REORGANIZE PARTITION p2022 INTO (PARTITION p2022_new);
-- 删除旧分区
ALTER TABLE oa_data DROP PARTITION p2022;