# 范围分区
CREATE TABLE `表名`(
)engine=INNODB
PARTITION BY RANGE(`字段名称`) (
PARTITION 分表名称 VALUES LESS THAN(范围),
PARTITION 分表名称 VALUES LESS THAN(范围)
);
# 哈希分区
create table `表名`(
)engine=INNODB
PARTITION BY HASH(UNIX TIMESTAMP(`字段名称`)) PATITIONS 4;
# 时间分区
create table `表名`(
)engine=INNODB
PARTITION BY RANGE(YEAR(`字段名称`))(
PARTITION p0 VALUES LESS THAN(2017),
PARTITION p1 VALUES LESS THAN(2018),
PARTITION p2 VALUES LESS THAN(2019)
);
# 查看分区情况
SELECT
table_name,partition_name,partition_description,table_rows
FROM
information_schema.`PARTITIONS`
WHERE table_name = '表名';
# 归档分区数据,mysql数据库版本需要大于等于5.7
CREATE TABLE `归档表表名`(
)engine=INNODB
ALTER TABLE `原数据表表名` exchange PARTITION p0 WITH TABLE `归档表表名`;
ALTER TABLE `原数据表表名` DROP PARTITION p0;
ALTER TABLE `归档表表名` ENGINE=ARCHIVE;