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(最小最优)


相关推荐
Random Glow1 小时前
二级索引与回表:一次回表到底多贵
数据库·mysql·性能优化·innodb·索引
CarIise1 小时前
JDBC 与数据库事务核心
数据库·笔记
见闻小天地1 小时前
新手入门:印刷包装设备的伺服和PLC运动控制方案各管什么?七步选型讲清楚
运维·网络·数据库·人工智能
海鸥-w2 小时前
Redis 配置与排错说明
java·数据库·redis·bootstrap
jaysee-sjc2 小时前
【苍穹外卖】Day12:工作台数据看板与 Excel 报表导出
java·开发语言·数据库·spring boot·spring·微信·excel
sunburn-2 小时前
数据库聚合查询完整教程:从基础函数到实战统计
java·数据库·mysql·数据库开发
小蒜学长3 小时前
基于 Spring Boot 的英语单词背诵系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
中电金信3 小时前
开发更高效、监控更实时、运维更省心,源启数据开发平台构筑一站式数据开发新底座
网络·数据库·人工智能
泡海椒3 小时前
深度解析JQuick-SQL 谓词下推与投影下推优化机制
数据库·sql
❀͜͡傀儡师4 小时前
MySQL REST Service 认证鉴权体系与 MySQL 26.10.0 内置化演进
数据库·mysql·adb