MySQL面试题——联合索引

总结于JavaGuide

知识点总结

请解释一下 MySQL 的联合索引及其最左前缀原则

如果有索引 联合索引(a,b,c),查询 a=1 AND c=1 会走索引么?c=1 呢?b=1 AND c=1 呢? b = 1 AND a = 1 AND c = 1 呢?

回答

一、联合索引 & 最左前缀原则解释

  1. 联合索引(复合索引):基于多个字段组合创建 的索引,比如(a,b,c),索引数据会按「a 字段排序 → 同 a 值按 b 排序 → 同 b 值按 c 排序」的规则存储。
  2. 最左前缀原则:MySQL 联合索引的核心匹配规则,必须从索引的最左侧第一个字段开始匹配,才能触发索引;跳过左侧字段、直接匹配右侧字段,索引会完全失效;中间字段缺失时,仅能匹配左侧连续字段的部分索引,右侧字段无法利用索引。

二、基于联合索引(a,b,c)的 4 个查询场景逐一回答

✅ 1. a=1 AND c=1会走索引(仅 a 字段的部分索引),c 字段无法利用索引;原因:匹配了最左的 a 字段,满足前缀要求,但跳过中间 b 字段,右侧 c 失效。

❌ 2. c=1完全不走索引;原因:未匹配最左的 a 字段,直接查最右侧字段,违背最左前缀原则,触发全表扫描。

❌ 3. b=1 AND c=1完全不走索引;原因:未匹配最左的 a 字段,直接查 b、c,无任何前缀匹配,索引失效

。✅ 4. b=1 AND a=1 AND c=1走完整的联合索引(全索引命中) ;原因:MySQL 查询优化器会自动调整 AND 等值条件的顺序,最终等效 a=1 AND b=1 AND c=1,完整匹配索引所有字段。

相关推荐
DIY源码阁16 分钟前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
我叫黑大帅32 分钟前
通过php 中的Route:: 的写法了解什么是静态类调用
后端·面试·php
Aphasia3111 小时前
从输入URL到页面展示全流程
前端·面试
2601_961845421 小时前
高考真题试卷电子版|2025高考全科试卷分类下载
考研·面试·蓝桥杯·远程工作·程序员创富·高考
我叫黑大帅2 小时前
前端如何竖屏固定视口背景
前端·javascript·面试
浪客灿心2 小时前
项目篇:模块设计与实现
数据库·c++
折哥的程序人生 · 物流技术专研2 小时前
《Java 100 天进阶之路》第95篇:消息队列基础(RocketMQ/Kafka)(2026版)
java·面试·kafka·rocketmq·java-rocketmq·求职招聘
不会敲代码12 小时前
我花了三天时间,终于把 Cookie、XSS、CSRF 和浏览器存储给整明白了
javascript·面试
swipe2 小时前
Mem0 x Agent 实战系列:分层记忆 + 三路召回,搭建真正可用的长期记忆层
前端·javascript·面试
Lee川2 小时前
Event Loop 面试通关:从原理到口述再到实战
前端·面试