zoukankan      html  css  js  c++  java
  • MySql采用range分区可提升查询效率

    简介:

    RANGE分区基于一个给定的连续区间范围,早期版本RANGE主要是基于整数的分区。在5.7版本中DATE、DATETIME列也可以使用RANGE分区,同时在5.5以上的版本提供了基于非整形的RANGE COLUMN分区。RANGE分区必须的连续的且不能重叠。使用

    “VALUES LESS THAN ()” 来定义分区区间,非整形的范围值需要使用单引号,并且可以使用MAXVALUE作为分区的最高值。

    本文将给大家介绍MySQL 5.6.24 range分区增加删除处理的相关内容,分享给大家供大家参考学习,下面来看看详细的介绍:

    box_enter_record_archive表中大概有40万数据,在没有任何改动的情况下查询:耗时0.545s

    把时间加为主键,注意:mysql中创建分区的字段必须在主键中,然后查询耗时:0.547s

    采用range分区

    ALTER TABLE `box_enter_record_archive`
    partition by range(to_days(entertime))
    (
    partition P0 values less than (to_days('2018-01-01')),
    partition P1 values less than (to_days('2018-02-01')),
    partition P2 values less than (to_days('2018-03-01')),
    partition P3 values less than (to_days('2018-04-01')),
    partition P4 values less than (to_days('2018-05-01')),
    partition P5 values less than (to_days('2018-06-01')),
    partition P6 values less than (to_days('2018-07-01')),
    partition P7 values less than (to_days('2018-08-01')),
    partition P8 values less than (to_days('2018-09-01')),
    partition P9 values less than (to_days('2018-10-01')),
    partition P10 values less than (to_days('2018-11-01')),
    partition P11 values less than (to_days('2018-12-01'))
    )

    查看分区情况,每个分区有多少记录

    SELECT partition_name,table_rows,a.*  FROM
      INFORMATION_SCHEMA.partitions a
    WHERE
      TABLE_SCHEMA = schema()
      AND TABLE_NAME='box_enter_record_archive'; 

    创建分区后查询耗时:0.169s

    再为entertime添加索引后,查询耗时:0.004s

    相关命令:

    ALTER TABLE `box_enter_record_archive` DROP partition p0; -- 删除box_enter_record_archive表中的某一个分区。
    ALTER TABLE `box_enter_record_archive` REMOVE partitioning; -- 删除box_enter_record_archive表的分区并将其恢复为其原始的非分区状态。
    ALTER TABLE `box_enter_record_archive` add partition(partition P12 values less than (to_days('2019-01-01'))); -- 新增range分区

    每天,进步一点点

  • 相关阅读:
    拖拽文件上传demo
    JS权限树数据处理demo
    某面试题 a==1&&a==2&&a==3 的解决方案以及涉及知识
    解决forEach函数中异步调用及Promise.all()的基础使用
    基于element ui的el-date-picker 日、周、月粒度切换时间选择器
    基于element ui的el-table-column行内编辑input/select封装
    JavaScript优化技术
    vue-canvas-poster生成海报 jsZip打包称压缩包
    uniapp中使用uView时 TypeError: Cannot read property ‘mark‘ of undefined
    JS中深拷贝数组、对象、对象数组方法
  • 原文地址:https://www.cnblogs.com/dwBurning/p/mysqlrange.html
Copyright © 2011-2022 走看看