news 2026/10/2 17:50:37

Java面试MySQL索引,这5个问题必问

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java面试MySQL索引,这5个问题必问

问题一:为什么MySQL用B+树,不用B树或哈希?

哈希索引等值查询快,但范围查询废了,因为哈希值无序。B树每个节点都存数据,树高比B+树高,磁盘IO次数多。B+树只在叶子节点存数据,非叶子节点只存索引,同样磁盘页能塞更多索引项,树更矮,查任何数据都只要两到三次IO。叶子节点还用链表串起来,范围查询直接顺着链表扫。面试官想听的不是“B+树好”,是“为什么好”。答出磁盘IO和范围查询,基本过关。

问题二:聚簇索引和非聚簇索引有什么区别?

聚簇索引的叶子节点存整行数据,非聚簇索引叶子节点存主键值。InnoDB的主键索引就是聚簇索引,一张表只有一个。你给name字段建索引,查name得到主键,再拿主键回聚簇索引捞整行,这叫回表。回表是性能杀手,能避免就避免。怎么避免?用覆盖索引,把要查的字段都放进联合索引里,查完索引直接返回,不回表。面试时能讲清回表代价和覆盖索引,加分。

问题三:联合索引的最左前缀原则是什么?

联合索引(a,b,c),查询条件必须从a开始,跳过a直接用b,索引失效。但有个例外:a用范围查询,b和c就断了。最左前缀的本质是B+树按a、b、c顺序排序,你跳过a,树没法定位。面试常问:where b=1 and c=2能用索引吗?不能。where a=1 and c=2呢?a能用,c用不上。where a=1 and b>2 and c=3呢?a和b能用,c断了。答清楚这个,面试官会点头。

问题四:哪些情况会导致索引失效?

八个典型场景:对索引列做函数运算、隐式类型转换、like以%开头、or连接非索引列、not in和!=、is null和is not null、联合索引不满足最左前缀、数据区分度太低。面试官最爱问“为什么like '%abc'失效”,因为B+树从左到右排序,你从中间匹配,树没法用。还有“为什么隐式转换失效”,字符串列传数字,MySQL把列转成数字,等于对列做了函数运算。这些场景背下来,面试稳一半。

问题五:索引下推是什么?MySQL 5.6之后有什么优化?

索引下推是MySQL 5.6引入的优化。没有它,联合索引(a,b)查a=1 and b like '%x',存储引擎先按a=1捞出所有记录,回表,再在Server层过滤b。有了索引下推,存储引擎直接在索引层过滤b,减少回表次数。面试官问这个,是在看你有没有跟进MySQL新特性。类似的还有MRR、覆盖索引、自适应哈希。能说出索引下推的原理和收益,说明你不只是背八股,是真读过文档。

这5个问题答得漂亮,面试官会认定你懂数据库。答得含糊,他会担心你上线后写出一条拖垮生产的SQL。索引知识不是面试专用,是你每天写代码的护身符。把B+树画一遍,把回表跑一遍,把最左前缀在脑子里推一遍,比背一百道题管用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 17:49:07

荣耀MagicBook开机Logo更换原理与安全限制解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 17:47:35

ESP32-P4NRW32X深度体验:无无线高性能MCU的算力板解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 17:46:07

SLF4J多绑定冲突排查与日志依赖修复实战指南

1. 认识这个报错:SLF4J 到底在抱怨什么你的Java项目启动时,控制台突然冒出一行SLF4J: Class path contains multiple SLF4J bindings.,紧接着还会打印两行Found binding in [...]。很多人的第一反应是“项目还能正常启动,这应该只…

作者头像 李华
网站建设 2026/10/2 17:45:18

MGWR多尺度地理加权回归实战:破解空间异质性建模难题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 17:43:13

刷机总翻车?固件、驱动与存储兼容性才是隐性根源

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 17:42:20

微信小程序强制更新实战指南:从避坑到无缝升级

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华