我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 中怎么优化水平分区

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 中怎么优化水平分区

这期内容当中小编将会给大家带来有关MySQL 中怎么优化水平分区,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

表结构如下:

  这里已经插入2W多行数据进行测试。

看看这条查询。

SELECT * FROM t1 WHERE system_type IN (1,2)
UNION ALL
SELECT * FROM t1 WHERE system_type = 3;

这条语句对system_type字段过滤了两次,然后进行了一次UNION ALL。 但是不知道,其实对两个分区一共进行了三次全表扫描。
我们改成这样:

SELECT * FROM t1 WHERE system_type IN (1,3)
UNION ALL
SELECT * FROM t1 WHERE system_type = 2;

看似简简单单的改变,我们把对两个分区的扫描从三次减少到了两次。 但是这样,开销也很大,能不能把UNION ALL去掉呢?当然可以。

SELECT * FROM t1 WHERE system_type >0 and system_type < 4;

去掉了UNION ALL,但是遇到的问题是对分区的扫描变成了范围查找,而且上下限不固定,相对来说,还有优化的空间。

我们改下对system_type列的过滤条件,变成如下:

SELECT * FROM t1 WHERE system_type in(1,2,3);

id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 r0,r1 ALL \N \N \N \N 17719 Using where

现在,依然是范围扫描,但是上下限就很明了了。这样对扫描分区来说,很快的找到上下限,比之前来的要快,开销来的要小点了。
但是貌似还可以优化, 虽然过滤条件的上下限明显了,但是对于区域之内的扫描还是全分区(相当于整个表的全表。)。 
OK,那现在给这个列加上索引吧。     ALTER TABLE t1 ANALYZE PARTITION r0,r1;

SELECT * FROM t1 WHERE system_type in(1,2,3);

id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 r0,r1 range NewIndex1 NewIndex1 1 \N 6462 Using where

上述就是小编为大家分享的MySQL 中怎么优化水平分区了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 中怎么优化水平分区

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mysql千万级别水平分表优化

需求:随着数据量的增加单表已经不能很好的支持业务,千万级别数据查询缓慢   Mysql数据优化方案:   方案一:使用myisam进行水平分表优化   方案二:使用mysql分区优化   一:Myisam水平分区   1、创建水平分表 user_1:   --
Mysql千万级别水平分表优化
2016-01-31

mysql水平分表后怎么查询

当使用水平分表技术后,查询语句的写法会发生一些变化。以下是一些常用的查询示例:查询单个表:SELECT * FROM table_name WHERE condition;在水平分表后,可以使用表名的分片规则来查询指定的分片表,例如:
2023-10-27

mysql中水平拆分指的是什么

这篇文章主要介绍了mysql中水平拆分指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mysql水平拆分1、说明水平拆分是通过某种战略将数据单片存储,单片存储器内的单
2023-06-15

mysql数据水平拆分怎么实现

MySQL的数据水平拆分可以通过以下几种方式来实现:分区(Partitioning):MySQL支持分区表,可以将表的数据按照某个规则分割成多个分区存储在不同的磁盘上。可以按照范围、列表、哈希等方式进行分区。分区可以提高查询性能,减少索引大
2023-10-27

如何实现MySQL底层优化:数据表的水平和垂直分割策略

如何实现MySQL底层优化:数据表的水平和垂直分割策略,需要具体代码示例引言:在大型应用场景下,MySQL数据库经常面临着海量数据的存储和查询压力。为了解决这个问题,MySQL提供了数据表的分割策略,包括水平分割(Horizontal Pa
如何实现MySQL底层优化:数据表的水平和垂直分割策略
2023-11-08

Android 中怎么利用Recyclerview实现水平分页

Android 中怎么利用Recyclerview实现水平分页,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。解决思路既然打算用Recyclerview实现,很明显这就可以用Gr
2023-05-30

编程热搜

目录