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分区

每天,进步一点点

原文地址:https://www.cnblogs.com/dwBurning/p/mysqlrange.html

时间: 2024-11-10 12:20:23

MySql采用range分区可提升查询效率的相关文章

oracle分区技术提高查询效率

概述: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表. 下面介绍如何使用分区增加查询效率 range分区:就是区域分区 CREATE TABLE SALE ( PRODUCT_ID VARCHAR2(5), SALE_COUNT NUMBER(10,2) ) PARTITION BY RANGE (SALE

mysql关于char和varchar的查询效率问题

看了好多资料都说 varchar(size) 可变长度的字符值,节省空间,查询效率低 char(size) 固定长度的字符值,浪费空间,查询效率高 但是实际测试  char(100)   varchar(100)   300W条数据 从查询方面的角度来说,还是varchar毕竟靠谱 查询效率(在没有使用索引的情况下):   varchar的字段查询要比char快 通过对比  char100 需要查询时间1.10s   而varchar100 需要时间是973ms  欢迎大家指正!! 原文地址:h

MYSQL优化_MYSQL分区技术[转载]

MySQL分区技术是用来减轻海量数据带来的负担,解决数据库性能下降问题的一种方式,其他的方式还有建立索引,大表拆小表等等.MySQL分区按照分区的参考方式来分有RANGE分区.LIST分区.HASH分区.KEY分区.本文对这几种分区方式进行了详细的介绍,并且给出了简单的示例,文章简洁明了,对于想要初步了解MySQL分区技术的同学来说是很不错的参考材料. 一.背景介绍 当 MySQL中一个表的总记录数超过了1000万,会出现性能的大幅度下降吗?答案是肯定的.但性能下降的比率由系统的架构.应用程序.

MySQL如何避免使用Linux的swap分区而提升读写性能

MySQL如何避免使用Linux的swap分区而提升读写性能 Linux有很多很好的内存.IO调度机制,但是并不会适用于所有场景.对于DBA来说Linux比较让人头疼的一个地方是,它不会因为MySQL很重要就避免将分配给MySQL的地址空间映射到swap上.对于频繁进行读写操作的系统而言,数据看似在内存而实际上在磁盘是非常糟糕的,响应时间的增长很可能直接拖垮整个系统.这篇blog主要讲讲我们作为DBA,怎样尽量避免MySQL惨遭swap的毒手. 首先我们要了解点基础的东西,比如说为什么会产生sw

MySQL数据表range分区例子

某些行业数据量的增长速度极快,随着数据库中数据量的急速膨胀,数据库的插入和查询效率越来越低.此时,除了程序代码和查询语句外,还得在数据库的结构上做点更改:在一个主读辅写的数据库中,当数据表数据超过1000w行后,那查询效率真的很让人抓狂.就算早前建了索引,也很难满足用户对于系统查询效率的体验. 优化方案是分表或分区.至于分区的原理以及分区和分表的区别,搜索一下,都介绍的很详细,这里就不作冗余介绍.简单来讲,分表旨在提高数据库的并发能力,分区旨在优化磁盘的IO和数据的读写,所以采用什么方案,还得根

( 转 ) mysql 实战 or、in与union all 的查询效率

OR.in和union all 查询效率到底哪个快. 网上很多的声音都是说union all 快于 or.in,因为or.in会导致全表扫描,他们给出了很多的实例. 但真的union all真的快于or.in?本文就是采用实际的实例来探讨到底是它们之间的效率. 1:创建表,插入数据.数据量为1千万[要不效果不明显]. Sql代码   drop table if EXISTS BT; create table BT( ID int(10) NOT NUll, VName varchar(20) D

mysql数据库的优化和查询效率的优化

一.数据库的优化 1.优化索引.SQL 语句.分析慢查询: 2.设计表的时候严格根据数据库的设计范式来设计数据库: 3.使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘IO: 4.优化硬件:采用SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等: 5.采用MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率: 6.垂直分表:把一些不经常读的数据放在一张表里,节约磁盘I/O: 7.主从分离读写:采用主从复制把数据库的读操作和写入操作

atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模

atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模 1. 配置条件字段@Conditional 1 2. 配置条件字段显示类型为[email protected](displayType = displayType.rang, rangStart = rang.start, rangEnd = rang.end,op=op.range) 1 3. 自定义@Adapter (UI2whereExpress) 2 4. 条件字段排序@ConditionFieldCf

提高MySQL数据库查询效率的几个技巧(转载)

[size=5][color=Red]提高MySQL数据库查询效率的几个技巧(转)[/color][/size]      MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我在开发一个P2P应用的时候曾经使用MySQL来保存P2P节点,由于P2P的应用中,结点数动辄上万个,而且节点变化频繁,因此一定要保持查询和插入的高效.以下是我在使用过程中做的提高效率的三个有效的尝试. l 使用statement进行绑定查询 使用statement可以提前构建查询语法树,在查询时不再