mysql 的 RANGE 分区有价值吗?
PHP中文网
PHP中文网 2017-04-17 13:38:16
[MySQL讨论组]

今天看了一下 MySQL 的 RANGE 分区,感觉限制太大了,不知道在实际应用是否有价值?

例如,在 RANGE 分区中,要么分区表上没有主键/唯一键,要么分区表的主键/唯一键都必须包含分区键。

-- 表包含一个主键和一个唯一键
CREATE TABLE emp(
    id INT NOT NULL,
    store_id INT NOT NULL,
    PRIMARY KEY(id),
    UNIQUE KEY key_store_id(store_id)
)
-- 在主键上分区
PARTITION BY RANGE(id)(
    PARTITION p0 VALUES LESS THAN (10),
    PARTITION p1 VALUES LESS THAN (20),
    PARTITION p2 VALUES LESS THAN (30)
);

抛出错误:A UNIQUE INDEX must include all columns in the table's partitioning function

-- 表包含一个主键和一个唯一键
CREATE TABLE emp(
    id INT NOT NULL,
    store_id INT NOT NULL,
    PRIMARY KEY(id),
    UNIQUE KEY key_store_id(store_id)
)
-- 在唯一键上分区
PARTITION BY RANGE(store_id)(
    PARTITION p0 VALUES LESS THAN (10),
    PARTITION p1 VALUES LESS THAN (20),
    PARTITION p2 VALUES LESS THAN (30)
);

抛出错误:A PRIMARY KEY must include all columns in the table's partitioning function

在设计表的时候,主键肯定是不能缺少的,也就是说我们在实际的分区操作时只能按照主键来分区,同时该表还必须保证没有任意一列是包含唯一键的。
面对这么多的限制,RANGE 分区真的有价值吗?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
天蓬老师

range分区主要是用来按照时间分区的, 可以把一些老数据隔离开来, 甚至删掉

黄舟

减小单分区文件大小啊,这样查询范围少了,会更快

大家讲道理

range一般都是按照时间 例如季度 年份等来划分 这是企业使用最多的表分区 以及它配合的rangehash**

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号