Mysql索引的最左匹配原则原理

总所周知,mysql的索引遵循的是最左匹配原则
那最左匹配原则在mysql里是怎么玩的?
在这里插入图片描述在这里插入图片描述

假设我们在表中有2个字段,一共有6条数据,其中id的索引树见上图
我们现在要查id=6的数据:首先mysql会将0003这个节点加载到内存中比对,发现6要比3大,则取到0003节点的右子节点的地址,然后再将0004 0005这个节点加载到内存中,将6继续跟4和5比对,发现6还是比4和5都大,就取4和5节点的右子节点的地址,最后找到0006这个叶子节点上

以上是id主键的检索方式
下面来说下非主键索引在Myiasm和Innodb中不同
假设我们以name作为索引
当我们要查一个name=mi的数据列时,首先mysql会先将索引树中的节点按照数据库的字符集全部转换一遍,
譬如我们的数据库配置的是utf8mb4,在utf8mb4表里,phone的第一个字段p是100,第二个字母h是150,依此转换一遍,然后拿mi去跟phone比对,如果发现mi比phone大,则取其右子节点,反之取左子节点,直到找到mi为止
在这里插入图片描述在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
回答: 在MySQL最左匹配原则指的是联合索引只有先确定了前一个(左侧的值)后,才能确定下一个值。当遇到范围查询(如>、<、between、like)时,联合索引使用范围查询的字段后的索引在该条SQL都不起作用。这意味着,如果查询条件有范围查询,那么联合索引只能用到范围查询之前的字段。\[1\] 举个例子,如果有一个联合索引(a,b,c),那么查询语句select * from t where c=1 and a=1 and b=1可以使用最左匹配原则,因为MySQL的优化器将其优化成索引可以匹配的形式,即select * from t where a=1 and a=1 and c=1。\[2\]所以,最左匹配原则并不适用于范围查找。 #### 引用[.reference_title] - *1* *2* [MYSQL最左匹配原则原理讲解](https://blog.csdn.net/Andrew_Chenwq/article/details/125242197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Mysql最左匹配原则](https://blog.csdn.net/qq_42410605/article/details/122517756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊狸的Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值