#独家
mysql在联合索引截断的情况下会如何搜索呢?

2025-04-28 0 1,764

省略了链表的箭头,有联合索引(a,b),当where条件只有a = 2的情况下会如何搜索到数据(2,1),(2,4),没有字段b他是如何判断走左子结点还是右子结点的?,它是路径是怎么走的?

 

提供的图展示的是数据库中B+树索引的结构。

在B+树中,即使是联合索引(a,b),当我们只检索a=2时,检索过程是这样的:

  1. 首先从根节点开始,观察我们要找的值a=2。根节点包含(2,4)这个索引值。
  2. 当只检索a字段时,B+树会比较a的值。在这里,我们的查询条件是a=2,刚好等于根节点中的第一个字段值。
  3. 系统会遵循以下规则来决定走向:
    • 如果要查找的a值小于当前节点的a值,走左子节点
    • 如果要查找的a值等于当前节点的a值,也走左子节点(对于相等的情况)
    • 如果要查找的a值大于当前节点的a值,走右子节点
  4. 在这个例子中,查找a=2,等于根节点中的(2,4)的a值,所以系统会走向左子节点。
  5. 进入左子节点后,系统会扫描所有a=2的记录。由于左子节点包含(1,1),(1,2),(2,1),其中只有(2,1)满足a=2。
  6. 然后系统会继续往右查找,到达右子节点,继续扫描a=2的记录。右子节点包含(2,4),(3,1),(3,2),其中只有(2,4)满足a=2。
  7. 最终找到所有a=2的记录:(2,1)和(2,4)。

简单来说,当只有a=2的查询条件时,B+树会沿着索引路径找到第一个a=2的记录,然后沿着叶子节点顺序扫描,收集所有a=2的记录,不需要关心b的值。这也是为什么在创建联合索引时,把经常作为查询条件的列放在前面很重要。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 mysql在联合索引截断的情况下会如何搜索呢? https://www.jkxiazai.com/4325.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务