- MySQL分区表支持RANGE,LIST,HASH,KEY,COLUMNS多种分区算法。
- 分区表的唯一索引和主键索引必须包含分区列。
- 分区表是一张逻辑大表,各个分区数据单独存放。
- 分区表的唯一索引只在当前文件唯一,不是全局唯一。
- 分区表虽然有可能降低了树的高度,但是不能提升性能,如果用非分区列查询,需要查询
所有分区反而会降低性能。 - 分区表主要用于数据的管理,比如按照月或年管理数据,便于清理数据:
create table sales_order(
order_date DATETIME not null,
)ENGINE=InnoDB PARTITION BY RANGE(YEAR(order_date))(
PARTITION P_2017 VALUES LESS THAN(2017),
PARTITION P_2018 VALUES LESS THAN(2018),
PARTITION P_2019 VALUES LESS THAN(2019),
PARTITION P_catchall VALUES LESS THAN MAXVALUE
);
-- 删除分区
ALTER TABLE sales_order
TRUNCATE PARTITION P_2017;
网友评论