联合索引(多列索引)[通俗易懂]

联合索引(多列索引)[通俗易懂]联合索引是指对表上的多个列进行索引,联合索引也是一棵B+树,不同的是联合索引的键值数量不是1,而是大于等于2.最左匹配原则假定上图联合索引的为(a,b)。联合索引也是一棵B+树,不同的是B+树在对索引a排序的基础上,对索引b排序。所以数据按照(1,1),(1,2)……顺序排放。对于selete*fromtablewherea=XXandb=XX,显然是可以使用…

大家好,又见面了,我是你们的朋友全栈君。

联合索引是指对表上的多个列进行索引,联合索引也是一棵B+树,不同的是联合索引的键值数量不是1,而是大于等于2.

最左匹配原则

联合索引(多列索引)[通俗易懂]

假定上图联合索引的为(a,b)。联合索引也是一棵B+树,不同的是B+树在对索引a排序的基础上,对索引b排序。所以数据按照(1,1),(1,2)……顺序排放。

对于selete * from table where a=XX and b=XX,显然是可以使用(a,b)联合索引的,

对于selete * from table where a=XX,也是可以使用(a,b)联合索引的。因为在这两种情况下,叶子节点中的数据都是有序的。

但是,对于b列的查询,selete * from table where b=XX。则不可以使用这棵B+树索引。可以发现叶子节点的b值为1,2,1,4,1,2。显然不是有序的,因此不能使用(a,b)联合索引。

By the way:selete * from table where b=XX and a=XX,也是可以使用到联合索引的,你可能会有疑问,这条语句并不符合最左匹配原则。这是由于查询优化器的存在,mysql查询优化器会判断纠正这条sql语句该以什么样的顺序执行效率最高,最后才生成真正的执行计划。所以,当然是我们能尽量的利用到索引时的查询顺序效率最高咯,所以mysql查询优化器会最终以这种顺序进行查询执行。

优化:在联合索引中将选择性最高的列放在索引最前面。

例如:在一个公司里以age 和gender为索引,显然age要放在前面,因为性别就两种选择男或女,选择性不如age。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136186.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • charles导致mac无法上网_使用不同的MAC地址上网

    charles导致mac无法上网_使用不同的MAC地址上网前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

    2022年7月31日
    104
  • pycharm安装后如何使用_Pycharm安装教程

    pycharm安装后如何使用_Pycharm安装教程http://blog.csdn.net/u014044812/article/details/78727496 激活码https://www.cnblogs.com/beginner-boy/p/7785041.html由于本人也是开发语言的学习小白,所以对于开发时使用的工具也不算太熟悉,不过这里还是要推荐一下本人使用过的两款工具:1、pycharm ;2、eclipse这是我用的比较顺…

    2022年8月28日
    3
  • 谷歌搜索好用吗_谷歌搜索引擎搜索技巧

    谷歌搜索好用吗_谷歌搜索引擎搜索技巧0前言相信大家在使用搜索引擎的时候,大部分情况下都是直接输入要搜索的关键词,然后在搜索结果里一个个点开查找。但除了特定信息外,搜索引擎同时也会返回大量无关的信息。有时候我们可能翻好几页也不一定能找到满意的结果,平白增加不少的工作量。其实,有一些特殊的技巧,可以对搜索结果进行限制和筛选,缩小检索范围,让搜索结果更加准确,大大提高我们的效率。下面,扩展迷就给大家介绍一些在进行谷歌搜索时可以使用的便捷技巧。其中,部分技巧在其他搜索引擎中也同样支持。文章目录0前言1.强制精确匹配2.AND

    2022年8月30日
    2
  • 聚类算法(4)–Hierarchical clustering层次聚类

    聚类算法(4)–Hierarchical clustering层次聚类目录 一、层次聚类1、层次聚类的原理及分类2、层次聚类的流程3、层次聚类的优缺点二、python实现1、sklearn实现2、scipy实现树状图分类判断一、层次聚类1、层次聚类的原理及分类1)层次法(Hierarchicalmethods)先计算样本之间的距离。每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个…

    2025年8月15日
    2
  • 冒泡排序法c语言代码_用冒泡法对数组a进行排序

    冒泡排序法c语言代码_用冒泡法对数组a进行排序选择法排序选择法排序是指:如果要把一个数组从小到大排列,那么就从该数组中依次选择最小的数字来排序。从第一个数字开始,将第一个数字与数组中剩下数字中最小的那一个交换位置,然后将第二个数字与剩下数字中最小的那个交换位置,以此类推,直到最后一个数字。例如输入数组{7,5,4,8,6,2,3}第一次排序通过查找最小的数字,交换7与2的位置;第二次查找5后面最小的数字,找到了3,交换5与3的位置;第三次查找4之后最小的数字,发现并没有数字比4小,交换4与4的位置(相当于没有改变);第四次查找8后面最小的数字5,

    2025年11月11日
    2
  • docker里面什么emule比较好_emule 服务器优先

    docker里面什么emule比较好_emule 服务器优先{“moduleinfo”:{“card_count”:[{“count_phone”:1,”count”:1}],”search_count”:[{“count_phone”:6,”count”:6}]},”card”:[{“des”:”云服务器ECS(ElasticComputeService)是一种弹性可伸缩的计算服务,助您降低IT成本,提升运维效率,使您更专注于核心业务创新。”,…

    2022年6月17日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号