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';
.png)

创建分区后查询耗时: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分区
每天,进步一点点
MySql采用range分区可提升查询效率的更多相关文章
- mysql如何使用索引index提升查询效率?
https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html Indexes are used to find rows with specif ...
- oracle分区技术提高查询效率
概述: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件 ...
- MySQL时间设计 int timestamp datatime 查询效率性能比较
在数据库设计的时候,我们经常会需要设计时间字段,在MYSQL中,时间字段可以使用int.timestamp.datetime三种类型来存储,那么这三种类型哪一种用来存储时间性能比较高,效率好呢?飘易就 ...
- mysql关于char和varchar的查询效率问题
看了好多资料都说 varchar(size) 可变长度的字符值,节省空间,查询效率低 char(size) 固定长度的字符值,浪费空间,查询效率高 但是实际测试 char(100) varcha ...
- mysql之数据库添加索引优化查询效率
项目中如果表中的数据过多的话,会影响查询的效率,那么我们需要想办法优化查询,通常添加索引就是我们的选择之一: 1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `t ...
- mysql中存储字段类型的查询效率
检索性能从快到慢的是(此处是听人说的): 第一:tinyint,smallint,mediumint,int,bigint第二:char,varchar第三:NULL 解释(转载): 整数类型1.TI ...
- mysql update join优化update in查询效率
数据库版本:5.6.16 update in 修改数据,结果执行时间过慢,一直不出结果. SQL语句及执行计划如下: UPDATE erp_order_extra SET last_time=1231 ...
- sql 提升查询效率 group by option hash group
问题: 一个程序查询经常超过20siis限制时间,排查问题后发现其中的一个存储过程时间会在15s左右 解决思路: 1:确认问题点 通过输出时间的方式查看存储过程中每个部分的执行时间,找到最耗时的三个过 ...
- MYSQL优化_MYSQL分区技术[转载]
MySQL分区技术是用来减轻海量数据带来的负担,解决数据库性能下降问题的一种方式,其他的方式还有建立索引,大表拆小表等等.MySQL分区按照分区的参考方式来分有RANGE分区.LIST分区.HASH分 ...
随机推荐
- swift textfield 和 textview 实时获取 输入内容
textfield : func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replac ...
- Fragment 生命周期 全局变量的声明位置
public class Fragment_shouye extends Fragment { private List<Zixun_shouye> datas; private TopV ...
- ROS学习笔记二(创建ROS软件包)
catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 必须包含一个catkin编译文件package.xml(manifests文件),此文件包含了描述该软件包的重要信 ...
- linux系统命令笔记
一.linux系统目录 /bin 系统命令目录 /dev 设备目录 /home 每个系统用户在home下都有一个目录, 每个用户登录到系统后会自动登录到这个目录下, root用户会在/root文件夹下 ...
- Linux gprof命令
一.简介 gprof是GNU工具之一,它在编译的时候在每个函数的出入口加入了profiling的代码,运行时统计程序在用户态的执行信息,可以得到每个函数的调用次数,执行时间,调用关系等信息,简单易懂. ...
- super限定,子类中系统查找变量的顺序:
示例代码如下: import static java.lang.System.*; //-父类: class BaseClass{ public int a=7; } //-子类: public cl ...
- 修改socket缓冲区大小
#include <stdio.h>#include <sys/time.h>#include <sys/types.h>#include <sys/sock ...
- Banner设计的视觉导向原则分析
Banner的布局方式 常见的Banner布局方式有五种,以下分别给出大致样式: 两栏式: 三栏式: 组合式: 一体式: 对角线式: 以上几种布局方式不分好坏,对于不同的主题.素材和文案可以自行选 ...
- [SoapUI] 比较JSON Response
比较两个JSON, ID是数字时,处理成统一的格式:只保留小数点后5位 package direct; import org.json.JSONArray; import org.json.JSONE ...
- apicloud管理
以下所有操作都是指“apicloud”平台下的管理: 1. 一定要记得备份证书.证书不是因为你记得别名和密码就能还原的.因为apicloud是服务器session存数据,千万不要打开多个app操作页面 ...