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

联合索引(多列索引)[通俗易懂]联合索引是指对表上的多个列进行索引,联合索引也是一棵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。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • t276芯片(芯片st是什么意思)

    ST7789V2是一个单芯片TFT-LCD驱动器。该芯片可以直接连接到外部MCU,支持并行8080系列的8位/9位/16位/18位接口,也支持SPI串行通讯接口。显示数据可以存储在240x320x18bits的片上显示数据RAM中。它可以在没有外部操作时钟的情况下执行显示数据RAM读写操作,以尽量减少功耗。并行接口占用外部MCU芯片引脚较多,但其通讯速率较快,一般只在需要高速刷新及MCU资源比较丰富的场合使用。SPI串行通讯接口占用MCU芯片引脚较少,通讯速率相对并行接口较慢,但因其占用MCU引脚.

  • asynctask使用_androidstudiohelloworld教程

    asynctask使用_androidstudiohelloworld教程Android AsyncTask 详解

  • Vue中使用animate.css「建议收藏」

    Vue中使用animate.css「建议收藏」最近把公司官网项目依赖进行了升级,里面用到了animate.css。目前版本4.1.0。目前4.x版本相比之前3.x的breakingchange如下:Animate.cssv4broughtsomeimprovements,improvedanimations,andnewanimations,whichmakesitworthupgrading.Butitalsocomeswithabreakingchange:wehaveaddedpref

  • 【目标检测】Fast RCNN算法详解

    【目标检测】Fast RCNN算法详解继2014年的RCNN之后,RossGirshick在15年推出FastRCNN,构思精巧,流程更为紧凑,大幅提升了目标检测的速度。

  • 漫画大全更新了吗_所有的漫画台

    漫画大全更新了吗_所有的漫画台无会员,10万+本漫画,统统免费!!!最新最热门的免费漫画大全,最全最二次元的撸漫平台,超多正版高清彩漫尽在漫画大全APP!《斗罗大陆》《斗破苍穹》《凤逆天下》《妃夕妍雪》《穿越西元3000后》《纯情丫头火辣辣》《勇者是女孩》《龙族》《哑舍》《暴走邻家》等等,全部免费,喜欢的统统都到碗里来!!!欢迎下载使用 …

  • 15款Java程序员必备的开发工具(转)

    15款Java程序员必备的开发工具(转)如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过。这是一款商业级的编程语言,我们没有办法不接触它对于Java,有两种截然不同的观点:一种认为Java是最简单功能

发表回复

您的电子邮箱地址不会被公开。

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