MySQL 优化器会选择【最小、最精准、最高效】的索引

某表有二个索引,一个是a,b,c三字段联合索引,一个是a字段单独索引, where a =2 ; 会用到哪个索引?为什么?

结论

where a = 2; 一定会走【a 字段单独索引】,绝对不会走联合索引 (a,b,c)!


为什么?(面试官最想听的核心原理)

核心原因:MySQL 优化器会选择【最小、最精准、最高效】的索引

1. 索引体积对比

  • 单列索引 a :只有 a 一个字段,索引树更小、数据更少、查询更快。
  • 联合索引 a,b,c :包含 a+b+c 三个字段,索引树更大、更重、IO 更高。

2. MySQL 优化器选择规则

查询只用到 a 字段时,优化器会自动选:
索引更小、扫描更快、回表成本更低的 【单列索引 a】

一句话:能走小索引,绝不走大索引!


用最通俗的比喻

  • 单列索引 a = 一张小卡片(只写了a)
  • 联合索引 a,b,c = 一张大表格(写了a、b、c)

只需要查 a ,肯定拿小卡片最快,不会去翻大表格。


面试满分口述(直接背)

"当查询条件只有 where a=2 时,MySQL 会选择 a 字段的单列索引

因为 MySQL 优化器遵循最优索引选择原则

在满足查询需求的前提下,优先选择字段更少、体积更小、查询效率更高的索引

单列索引 a 比联合索引 (a,b,c) 更小、更快,所以会选中它。"


超级总结(一句话刻在脑子里)

只查 a → 用最小的索引(单列a),不用大而全的联合索引!


巩固 2 道必考题(你一定能答对)

  1. where a=2 and b=3 → 走哪个?

    联合索引 (a,b,c)(因为用到 a、b,单列索引不够)

  2. where a=2 → 走哪个?

    单列索引 a(最小最优)


相关推荐
流星白龙1 小时前
【MySQL高阶】9.在一台机器上运行多个MySQL实例
数据库·mysql·adb
mN9B2uk171 小时前
MySQL命令行导出数据库
c语言·数据库·mysql
铁皮哥1 小时前
【后端开发】什么是守护线程,和普通线程有什么区别?
java·开发语言·数据库·人工智能·python·spring·intellij-idea
~央千澈~1 小时前
《ZAKU渗透论:卓伊凡的2026渗透工程》第三章:Web攻击原理(上)——注入与SQL注入
数据库·sql·oracle
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第86题】【Mysql篇】第16题:MySQL 中锁的种类与行锁实现原理?
java·开发语言·数据库·mysql·面试
染指11101 小时前
14.LangChain框架5-文档切分
数据库·人工智能·ai·langchain
abcy0712131 小时前
【无标题】
数据库·sqlite
code2roc1 小时前
SpringBoot整合Milvus向量数据库
数据库·spring boot·milvus·向量化
AugustRed1 小时前
Flyway 数据库版本迁移 零基础完整学习文档
数据库·学习