千家信息网

MySQL 中怎么优化水平分区

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关MySQL 中怎么优化水平分区,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。表结构如下:这里已经插入2W多行数据进行测试。看看这条
千家信息网最后更新 2026年11月02日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 中怎么优化水平分区了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

上下 水平 两个 内容 开销 条件 范围 分析 很大 明显 简简 专业 中小 内容丰富 区域 字段 小点 就是 很快 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州大一互联网络科技有限公司 为想互联网科技怎么样 互联网科技工作委员会副主任毛军 互联网科技金融公司 喔噻互联网科技 上海喔噻互联网科技 奇士达互联网科技 互联网科技logo设计 长亮科技互联网金融 互联网科技大会 互联网 科技服务平台 互联网汽车科技小镇 互联网科技实习生岗位职责 互联网科技寓意 浙江互联网科技研学营 宝灵互联网科技有限公司 互联网科技研发水平 北京瑞云互联网科技有限公司 银川新华互联网科技学校招聘 恒生科技互联网指数十大成分股 互联网科技作文 狮子座互联网科技有限公司 郑州华宇互联网科技 上海亿帐通互联网科技 金融科技与互联网金融相同和不同 千方科技属于互联网企业吗 锡山区互联网智能科技产品供应 中天科技中国工业互联网 广州百诚互联网科技有限公司官网 安徽九吞吴互联网科技有限公司
0