mysql复合索引怎么理解_关于复合索引的一些理解

前面单独写了关于复合索引中的最左前缀原则的仔细分析,接下来我们就复合索引进行更深一步的了解。这里的复合索引指的就是组合索引。

首先,我们重温一下复合索引的基本概念,就是在两个及以上字段建立一个索引。它的存在主要是为了多条件的查询,比如说where后面加了好几个条件,一个是A字段相关的,一个是B字段相关的。这个时候就需要复合索引出场了。

关于复合索引的原理,我觉得知乎上这位大哥的回答是很清晰明了的。这里贴上链接,打个小广告,欢迎去点赞。 mysql索引最左匹配原则的理解? 这里是对这个最左匹配原则的理解,但他的回答已经深入了复合索引里面的原理。我这里就大概说一下他的核心思想:

首先是在建立复合索引时,它的第一字段是有序的,然后第二字段是无序的,有序的部分是在第一字段一样的情况下建立起第二字段的无序。所以这也就是前面说的最左前缀原则的原理所在。所以我们就可以在自己的脑海里搭建这样的一个模型。

然后就是根据它的原理说明它如何在多条件查询时发挥的作用了。首先,第一顺序是处理多个条件中的第一字段中的条件,然后依次处理后面的条件。这样就能充分发挥这个模型的作用了,使你查询的效率最高。这个顺序的处理是由mysql的查询优化器来决定的,跟你放入多条件里的无关。

然后,可能会引出这样的一个讨论,在这样的多条件查询中,用单独索引查询还是复合索引查询好啊?这个我主要参考了这位大哥的一番讲解

讲解的还是很不错的,用我的话来简单复述一下就是:

1,建立复合索引,在更新时肯定会付出比单索引更大的代价,毕竟你多嘛,全都要重新打造肯定是要花点时空间的。

2.但是,在多条件查询上而言,由于复合索引的原理模型所在,绝对是比你一个索引的查询效率要高的,因为你除了第一字段外,其他全部用的是遍历,和原始手段无差别。那么条件越多,你的劣势就越明显。而如果你给每个条件里面的字段都建上索引,那么mysql查询优化器也只会选出最优的一个索引来使用,因为多个索引连接在一次可能消耗更大,缺少一种联系,而复合索引就是给了你这种联系。

3.所以,只要那个查询语句不是一个字段就能做完大部分的工作,而其他条件字段频繁更新,就都会选择复合索引。当产生大量这样的查询时,每点节省的资源累加起来都能节省服务器达大笔资源。

嗯,就讲到这里,欢迎交流讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值