iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL优化中index_merge有什么作用
  • 475
分享到

MySQL优化中index_merge有什么作用

2024-04-02 19:04:59 475人浏览 独家记忆
摘要

这篇文章主要介绍“Mysql优化中index_merge有什么作用”,在日常操作中,相信很多人在mysql优化中index_merge有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,

这篇文章主要介绍“Mysql优化中index_merge有什么作用”,在日常操作中,相信很多人在mysql优化中index_merge有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql优化中index_merge有什么作用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 为什么会有index merge

我们的 where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 index merge 技术。index merge 技术如果简单的说,其实就是:对多个索引分别进行条件扫描,然后将它们各自的结果进行合并(intersect/union)

MySQL5.0之前,一个表一次只能使用一个索引,无法同时使用多个索引分别进行条件扫描。但是从5.1开始,引入了 index merge 优化技术,对同一个表可以使用多个索引分别进行条件扫描。

相关文档:Http://dev.mysql.com/doc/refman/5.6/en/index-merge-optimization.html (注意该文档中说的有几处错误)

The Index Merge method is used to retrieve rows with several range scans and to merge their results into one. The merge can produce uNIOns, intersections, or unions-of-intersections of its underlying scans. This access method merges index scans from a single table; it does not merge scans across multiple tables.

In EXPLaiN output, the Index Merge method appears as index_merge in the type column. In this case, the key column contains a list of indexes used, and key_len contains a list of the longest key parts for those indexes.

index merge: 同一个表的多个索引的范围扫描可以对结果进行合并,合并方式分为三种:union, intersection, 以及它们的组合(先内部intersect然后在外面union)。

index merge 算法根据合并算法的不同分成了三种:intersect, union, sort_union. 

2. index merge 之 intersect

简单而言,index intersect merge就是多个索引条件扫描得到的结果进行交集运算。显然在多个索引提交之间是 AND 运算时,才会出现 index intersect merge. 下面两种where条件或者它们的组合时会进行 index intersect merge:

3. index merge 之 union

简单而言,index uion merge就是多个索引条件扫描,对得到的结果进行并集运算,显然是多个条件之间进行的是 OR 运算。

下面几种类型的 where 条件,以及他们的组合可能会使用到 index union merge算法:

1) 条件使用到复合索引中的所有字段或者左前缀字段(对单字段索引也适用)

2) 主键上的任何范围条件

3) 任何符合 index intersect merge 的where条件;

上面三种 where 条件进行 OR 运算时,可能会使用 index union merge算法。

4. index merge 之 sort_union

This access alGorithm is employed when the WHERE clause was converted to several range conditions combined by OR, but for which the Index Merge method union algorithm is not applicable.(多个条件扫描进行 OR 运算,但是不符合 index union merge算法的,此时可能会使用 sort_union算法)

5. index merge的局限

1)If your query has a complex WHERE clause with deep AND/OR nesting and MySQL does not choose the optimal plan, try distributing terms using the following identity laws:

6. 对 index merge 的进一步优化

index merge使得我们可以使用到多个索引同时进行扫描,然后将结果进行合并。听起来好像是很好的功能,但是如果出现了 index intersect merge,那么一般同时也意味着我们的索引建立得不太合理,因为 index intersect merge 是可以通过建立 复合索引进行更一步优化的。

7. 复合索引的最左前缀原则

上面我们说到,对复合索引的非最左前缀字段进行 OR 运算,是无法使用到复合索引的

SQL如下:
select cd.coupon_id, count(1) total from AAA cd
where  cd.coupon_act_id = 100476 and cd.deleted=0 and cd.pick_time is not null
group by cd.coupon_id ;
在AAA表中,coupon_act_id 和 deleted 都是独立的索引
select count(*) from AAA  where coupon_act_id = 100476;   结果为12360行
select count(*) from AAA where deleted=0;  结果为1300W行
从上面的解释我们可以看出来,index merge其实就是分别通过对两个独立的index进行过滤之后,将过滤之后的结果聚合在一起,然后在返回结果集。
在我们的这个例子中,由于deleted字段的过滤性不好,故返回的rows依然很多,所以造成的很多的磁盘read,导致了cpu的负载非常的高,直接就出现了延迟。
ps:其实在这个case中,并不需要加2个条件的index,只需要将deleted这个index干掉,直接使用coupon_act_id这个index即可,毕竟这个index的过滤的结果集已经很小了。
或者通过关闭index intersect功能也可以。

到此,关于“MySQL优化中index_merge有什么作用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL优化中index_merge有什么作用

本文链接: https://www.lsjlt.com/news/64642.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • MySQL优化中index_merge有什么作用
    这篇文章主要介绍“MySQL优化中index_merge有什么作用”,在日常操作中,相信很多人在MySQL优化中index_merge有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 优化驱动器有什么作用
    优化驱动器的作用:1、提高硬件设备的性能,可以降低响应时间、提高数据传输速度和减少资源消耗,从而提高硬件设备的性能;2、增强系统的稳定性,可以修复已知的错误和陷,提高驱动程序的稳定性;3、提升系统的可靠性可靠性,系统在长时间运行和重负载下的...
    99+
    2023-08-15
  • mysql中的优化器是什么
    这篇文章主要讲解了“mysql中的优化器是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中的优化器是什么”吧!说明分析器生成的语法树被认为是合法的,由优化器转化为执行计划。在m...
    99+
    2023-06-20
  • Docker中优化Mysql运行内存的操作是什么
    Docker中优化Mysql运行内存的操作是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用docker stats查询运行内存,从这里可以看到,我的my...
    99+
    2023-06-26
  • MySQL中的delimiter有什么作用
    这篇文章主要介绍“MySQL中的delimiter有什么作用”,在日常操作中,相信很多人在MySQL中的delimiter有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • mysql中的validate_password有什么作用
    MySQL中的validate_password是一个插件,用于强制设置和验证密码复杂性规则。通过启用validate_passwo...
    99+
    2024-05-14
    mysql
  • mysql中的analyze有什么作用
    mysql analyze 命令更新表的统计信息以优化查询性能,包括统计更新、查询优化器改进和空间释放。工作原理包括扫描表数据计算行数、distinct 值数和值分布,从而生成更优化的查...
    99+
    2024-05-01
    mysql
  • MySQL优化的最基础操作是什么
    这篇文章主要介绍“MySQL优化的最基础操作是什么”,在日常操作中,相信很多人在MySQL优化的最基础操作是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL优化的...
    99+
    2024-04-02
  • mysql有什么作用
    小编给大家分享一下mysql有什么作用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!众所周知,MySQL是一种关系数据库管理系统...
    99+
    2024-04-02
  • Html标签对提升SEO优化有什么作用
    本篇内容介绍了“Html标签对提升SEO优化有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  Html标签的优化其实是在优化领域中...
    99+
    2023-06-10
  • mysql中replace函数有什么作用
    这篇文章主要讲解了“mysql中replace函数有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中replace函数有什么作用”吧!说明可以替换字符串中的内容,...
    99+
    2023-06-20
  • mysql中set类型有什么作用
    这篇文章主要介绍“mysql中set类型有什么作用”,在日常操作中,相信很多人在mysql中set类型有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql中set类型有什么作用”的疑惑有所帮助!...
    99+
    2023-06-20
  • MySQL中innodb_flush_method函数有什么作用
    本篇内容介绍了“MySQL中innodb_flush_method函数有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细...
    99+
    2024-04-02
  • MySQL中relay_log_info_repository与sync_relay_log_info有什么作用
    本篇内容介绍了“MySQL中relay_log_info_repository与sync_relay_log_info有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编...
    99+
    2024-04-02
  • MySQL索引优化器工作原理是什么
    这篇“MySQL索引优化器工作原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“My...
    99+
    2022-11-30
    mysql
  • 独立ip主机对网站优化有什么作用
    独立ip主机对网站优化的作用:1、能被搜索引擎赋予更高的权重,有利于提高网站收录;2、能避免同服务器上其他网站的牵连,有利于网站后期...
    99+
    2023-02-16
    独立ip主机 主机
  • mysql checkpoint有什么作用
    本篇内容主要讲解“mysql checkpoint有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql checkpoint有什么作用”吧!che...
    99+
    2024-04-02
  • 临时表在SQL优化中的作用是什么
    本篇内容主要讲解“临时表在SQL优化中的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“临时表在SQL优化中的作用是什么”吧!今天我们来讲讲临时表的优化...
    99+
    2024-04-02
  • 站内优化中标签有哪些作用
    这篇文章给大家分享的是有关站内优化中标签有哪些作用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、标签的选取1、通过拓词工具(比如站长工具、百度关键词推荐工具、5118等一些工具)获取行业内用户搜索的关键词之所...
    99+
    2023-06-10
  • mysql中find_in_set优化的方法是什么
    在MySQL中,可以通过使用适当的索引来优化FIND_IN_SET()函数的性能。 FIND_IN_SET()函数用于在逗号分隔的字...
    99+
    2024-04-09
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作