博客
关于我
mysql 分区-range分区(二)
阅读量:517 次
发布时间:2019-03-08

本文共 1952 字,大约阅读时间需要 6 分钟。

MySQL的Range分区是实用的数据组织方式,可有效提升查询性能。本文详细解析Range分区的使用方法。

Range分区的概念

Range分区主要按特定字段的取值范围划分数据。常见的用途是按时间维度(如月份、年份)或空间维度(如地区编码)对数据进行组织。

分区字段的要求

  • 字段类型:分区字段必须是整型或可以转换为整型。若为日期类型,需使用支持转换的函数,如year()、to_days、to_secondsunix_timestamp(),其他函数不支持。
  • 数据类型:将日期字段转为整型后才能进行分区。
  • Range分区使用注意事项

  • 函数转换:如果使用日期字段分区,必须使用上述特定函数进行转换。
  • MAXVALUE:表示最大可能整数值,可用于定义上限分区。
  • 分区文件:分区文件可通过Show_variables[连接名]获取。
  • Range分区的讲座

    示例1:门店分区

    创建员工表,按门店ID分区:

    CREATE TABLE employees (    id INT NOT NULL AUTO_INCREMENT,    ename VARCHAR(30) NOT NULL,    ecode VARCHAR(30) NOT NULL,    store_id INT NOT NULL DEFAULT 0,    create_time DATETIME DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='员工表'PARTITION BY RANGE (store_id) (    PARTITION p0 VALUES LESS THAN (11),    PARTITION p1 VALUES LESS THAN (21),    PARTITION p2 VALUES LESS THAN (31),    PARTITION p3 VALUES LESS THAN (41));

    使用MAXVALUE时,请勿遗漏。

    示例2:时间分区

    按创建时间的年份分区:

    CREATE TABLE employees (    id INT NOT NULL AUTO_INCREMENT,    ename VARCHAR(30) NOT NULL,    ecode VARCHAR(30) NOT NULL,    store_id INT NOT NULL DEFAULT 0,    create_time DATETIME NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='员工表'PARTITION BY RANGE (YEAR(create_time)) (    PARTITION p0 VALUES LESS THAN (2017),    PARTITION p1 VALUES LESS THAN (2018),    PARTITION p2 VALUES LESS THAN (2019),    PARTITION p3 VALUES LESS THAN (2020));

    分区操作示例

    新增分区

    当存在MAXVALUE时,必须重置分区。删除分区时可能会删除数据,请谨慎操作:

    ALTER TABLE employees    ADD PARTITION p4 VALUES LESS THAN (51),    ADD PARTITION p5 VALUES LESS THAN (61);

    合并分区

    合并多个分区:

    ALTER TABLE employees    REORGANIZE PARTITION p0,p1,p2,p3 INTO (        PARTITION p1 VALUES LESS THAN (21),        PARTITION p2 VALUES LESS THAN (31),        PARTITION p3 VALUES LESS THAN (41),        PARTITION p4 VALUES LESS THAN (51),        PARTITION p5 VALUES LESS THAN (61)    );

    合并后不再有p0分区。

    删除分区

    谨慎进行分区删除:

    ALTER TABLE employees    DROP PARTITION p4;

    移除分区

    彻底移除表的分区:

    ALTER TABLE employees    REMOVE PARTITIONing;

    Range分区为优化查询性能提供了权威工具,您的DBED专家乐于助惠,为您解决分区问题。

    转载地址:http://diqnz.baihongyu.com/

    你可能感兴趣的文章
    conda管理虚拟环境
    查看>>
    每日一句_《秋日偶成》
    查看>>
    C/C++_大正整数的加法运算代码实现
    查看>>
    BSP和MapReduce有什么区别?
    查看>>
    Error: Flash Download failed - Cortex-M4
    查看>>
    前端学习之路
    查看>>
    008.Python基础语法(七)——序列数据类型
    查看>>
    centos 7 使用 163 yum 源
    查看>>
    Linux稀疏文件查看实际占用空间
    查看>>
    Python 强大的try-except-pass
    查看>>
    Weblogic 10.3.6 账户登录密码错误默认锁定策略
    查看>>
    Skype 与 Skype for Business 之间有何区别?
    查看>>
    1534. 统计好三元组
    查看>>
    数据库图形化客户端工具DBeaver
    查看>>
    真Unity3d_屏幕UI_2d转3d纯代码
    查看>>
    vscode中快速生成vue模板
    查看>>
    HTML5 Web Storage
    查看>>
    210所高校21届保研率曝光!这些211保研率堪比985!
    查看>>
    uniapp配置去掉友盟无法打包,提示配置错误如何解决
    查看>>
    网狐客户端-win32
    查看>>