mysql分区表

本文详细介绍了MySQL的分区表特性,包括分区表的优势、注意事项,以及如何将已有表改为分区表的操作步骤。同时,文章列举了RANGE、LIST、HASH、KEY、RANGE COLUMNS和LIST COLUMNS等分区方式,并提供了创建、修改和查询分区的命令示例,有助于理解分区表的使用和优化查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分区表特性:

MySQL 5.6.7 之前,一个表最多有1024个分区,从5.6.7开始,一个表最多可以有8192个分区。
分区表无法使用外键约束。
NULL 值会使分区过滤无效。
所有分区必须使用相同的存储引擎。
选择频繁查询使用的列作为分区列,查询会直接在特定分区上进行
避免频繁更新的列为分区列,会导致数据在不同分区之间迁移。
分区表在查询的时候尽量使用分区列查询,查询语句不需要过多的改动。www

分区表常用命令:

1. 查询是否支持分区:
    SHOW PLUGINS
        若有 partition 行且 STATUS 列的值为 ACTIVE,则表示支持分区
2. 向分区添加新的分区:
    ALTER TABLE sales ADD PARTITION (PARTITION p5 VALUES LESS THAN (2023));
3. 删除指定的分区
    ALTER TABLE sales DROP PARTITION p3;
4. 重新组织分区
    ALTER TABLE sales REORGANIZE p1, p2, p5 INTO (PARTITION p1 VALUES LESS THAN (2020), PARTITION p2 VALUES LESS THAN (2022), PARTITION p3 VALUES LESS THAN MAXVALUE);
5. 合并相邻的分区
    ALTER TABLE sales COALESCE PARTITION p1, p2;
6. 分析指定分区的统计信息
    ALTER TABLE sales ANALYZE PARTITION p1;:

1. 对于已有的表,改为分区表

分区键对应的列是主键或者是复合主键的一部分, 如果不是,需要删除旧主键,再创建复合主键,再设置自增
        #如果主键是自增的,需要先取消自增
        ALTER TABLE 表名 CHANGE id id BIGINT;
        #先去掉旧主键,并等待完成
        ALTER TABLE 表名 DROP PRIMARY KEY;
        #创建符合主键,并等待完成
        ALTER TABLE 表名 ADD PRIMARY KEY (id, batch_no);
        #再设置id为自增
        ALTER TABLE 表名 CHANGE id id BIGINT AUTO_INCREMENT;

2.对于已有的表 改为分区表:

按照半年一个分区,修改语法,如果表中已有数据, 在分区完成后,旧数据会自动按照分区规则分配至对应的分区.
        RANGE COLUMNS 分区:
        ALTER TABLE continue_data_1 PARTITION BY RA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值