分区类型介绍
分区将一张大表物理拆分为多个小表,对应用层透明,能显著提升查询和维护效率。
1. RANGE 分区(最常用)
适合按时间范围划分。
CREATE TABLE orders (
id INT,
order_date DATE,
amount DECIMAL(10,2)
)
PARTITION BY RANGE (YEAR(order_date)) (
PARTITION p2023 VALUES LESS THAN (2024),
PARTITION p2024 VALUES LESS THAN (2025),
PARTITION p2025 VALUES LESS THAN (2026),
PARTITION p_future VALUES LESS THAN MAXVALUE
);2. LIST 分区
适合枚举值,如地区、状态。
PARTITION BY LIST (status) (
PARTITION p_active VALUES IN (1, 2, 3),
PARTITION p_inactive VALUES IN (0, 4)
);3. HASH 分区
均匀分布数据,适合没有明显时间或类别特征的场景。
PARTITION BY HASH (id) PARTITIONS 8;管理操作
-- 新增 RANGE 分区
ALTER TABLE orders ADD PARTITION (PARTITION p2026 VALUES LESS THAN (2027));
-- 删除分区(快速清理历史数据)
ALTER TABLE orders DROP PARTITION p2023;
-- 查看分区信息
SELECT * FROM information_schema.PARTITIONS WHERE TABLE_NAME = 'orders';建议单表超过 5000 万行或 50GB 时考虑分区。
