目录

 MySQL创建分区方法

通过sql语句创建

通过navicat工具创建

分区中常用SQL示例


 MySQL创建分区方法

通过sql语句创建

CREATE TABLE `database_test`.`table_test`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `create_time` datetime(0) NOT NULL,
  PRIMARY KEY (`id`,`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY RANGE(YEAR(create_time))(
    PARTITION partition1 VALUES LESS THAN (2020),
    PARTITION partition2 VALUES LESS THAN (2021)
);

通过navicat工具创建

1、选中表,右键->设计表,点击选项卡中的“选项”

2、设置好参数,点击确定

  

 3、预览SQL,无误则保存,则完成分区创建

4、运行

SELECT PARTITION_NAME,PARTITION_METHOD,
PARTITION_EXPRESSION,PARTITION_DESCRIPTION,
TABLE_ROWS,SUBPARTITION_NAME,SUBPARTITION_METHOD
FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='your_table';

查看分区情况

分区中常用SQL示例

1、查询指定分区内的数据:

 select * from `your_table` partition(your_partition_name);


 2、对已存在的表进行分区

ALTER TABLE `your_table` PARTITION by HASH(YEAR(`day`)) PARTITIONS 10;


3、 删除表的所有分区

 ALTER TABLE `your_table` REMOVE PARTITIONING;

4、删除表的特定分区

ALTER TABLE `your_table` DROP PARTITION your_partition_name;

5、 删除表单个分区内的数据

 ALTER TABLE `your_table` TRUNCATE PARTITION your_partition_name;


6、把分区内的数据复制到另一张表

INSERT INTO `your_new_table` SELECT * FROM `your_old_table` PARTITION(your_partition_name);

7、新增分区

alter table `your_table` add partition(partition your_partition_name values less than(2021));

8、原表已有主键,需要新增复合主键,则需要先丢弃再重新设置主键。

ALTER TABLE `your_database`.`your_table` 
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`, `login_time`) USING BTREE;

9、查询分区信息。

SELECT PARTITION_NAME,PARTITION_METHOD,
PARTITION_EXPRESSION,PARTITION_DESCRIPTION,
TABLE_ROWS,SUBPARTITION_NAME,SUBPARTITION_METHOD
FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='your_table';

10、原表设置了MAXVALUE分区,若想添加新分区又不丢失数据,则需要重新分区。

Alter table `your_table` partition by RANGE(YEAR(login_time))(
partition p1 values less than (2014),
partition p2 values less than (2015),
partition p3 values less than (2016),
partition p4 values less than (2019),
partition p5 values less than (MAXVALUE)
);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐