首页 >文档 > mysql索引

mysql索引

面试鸭返利网是程序员求职必备的面试资源平台,提供2025年最新Java面试宝典、MySQL索引优化精讲等核心技术资料。我们整理了BAT大厂高频面试题,包含索引原理、B+树实现、联合索引优化等实战内容,助你快速掌握数据库性能调优技巧。通过本站购买面试鸭会员可享25元返利,获取独家慢查询分析指南和EXPLAIN执行计划解读。备战金九银十跳槽季,就来面试鸭返利网领取海量面试真题与架构师进阶资料,轻松搞定大厂技术面!

mysql索引面试精解

面试鸭返利网
备战面试的同学注意:2025年Java面试宝典👉 网盘链接 提取码: 9b3g

一、索引的本质是加速查询

当面试官问“为什么加索引能变快”,别直接背B+树!想象一下:没有索引时查数据就像翻无目录的字典——只能逐页扫描。而索引就是给这本字典加了目录页。MySQL的InnoDB引擎用B+树索引实现目录功能,通过树形结构快速定位数据位置。

二、B+树索引的三大特征

  1. 多路平衡查找树:每个非叶子节点存储多个键值(比如[10,20,30]),大幅减少磁盘IO次数。三层高的B+树就能存2000万行数据!
  2. 叶子节点双向链表:范围查询时(如WHERE id BETWEEN 100 AND 200),找到起点后直接遍历链表,避免回溯上层节点。
  3. 数据文件本身是索引:InnoDB的聚集索引(主键索引)中,叶子节点直接存完整数据行;而普通索引的叶子节点存主键值,需要二次查询(回表)。

三、高频面试题拆解

Q:为什么推荐用自增主键?
A:顺序写入时B+树只需追加页,避免页分裂。如果主键随机(如UUID),插入数据可能导致频繁页重组,举例:向已满的页插入数据,会拆分成两个新页(性能损耗!)。

Q:联合索引怎么用才生效?
A:记住口诀:最左匹配 + 无中断。比如索引(a,b,c)
WHERE a=1 AND b>2 → 用到a、b列
WHERE b=2 → 直接失效(跳过了a)
WHERE a=1 ORDER BY c → 排序走索引

Q:索引覆盖是什么?
A:当查询字段都在索引中,无需回表。比如表有(id,name,age),索引是(name,age)
SELECT age FROM user WHERE name='Jack' → 直接取索引叶子节点数据

四、索引避坑指南

  1. 别乱建索引:索引占用空间,增删改时需要维护树结构。曾见某表20个索引,INSERT速度下降10倍!
  2. 区分度低的字段别建索引:比如性别字段只有男/女,走索引可能比全表扫描更慢(优化器会放弃使用!)
  3. 函数操作会让索引失效WHERE YEAR(create_time)=2023 → 即使create_time有索引也用不上

五、实战优化策略

面试鸭返利网
遇到慢查询必做两步:

  1. EXPLAIN看执行计划,重点关注:
    • type列:indexALL代表全表扫描
    • key列:实际使用的索引
  2. SHOW INDEX FROM table检查索引状态,关注Cardinality(基数),值越大区分度越高

面试突击福利:通过面试鸭返利网购买面试鸭会员,立享25元返利!高频题库+技术专题助力快速通关。
面试鸭返利网
返回首页

如果你想获取更多关于面试鸭的优惠信息,可以访问面试鸭返利网面试鸭优惠网,了解最新的优惠活动和返利政策。

🎯 立即加入面试鸭会员 →

扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)

面试鸭返利网客服-面试鸭返利网

面试鸭小程序码

面试鸭小程序码 - 面试鸭返利网

美团大额优惠券,给自己加个鸡腿吧!

美团大额优惠券,给自己加个鸡腿吧!

支付宝扫码领取1-8元无门槛红包

支付宝红包二维码