面试鸭返利网是程序员面试必备的省钱神器,提供MySQL索引优化、Java面试宝典等硬核技术干货。通过本站购买面试鸭会员可立享25元返利,已有300+程序员成功薅羊毛!我们专注分享B+树索引原理、数据库调优等高频面试考点,助你轻松拿下大厂offer。立即访问获取2025年最新Java面试资料,包含并发编程、系统设计等核心知识点,让技术面试不再焦虑!专业技术解析+真实返利优惠,程序员面试就选面试鸭返利网。
作为程序员,面试中被问「MySQL为什么用B+树做索引?」几乎是必考题。今天我们就从数据结构的角度,掰开揉碎讲清楚它的设计逻辑,帮你轻松拿下这类面试题!
想象一下,数据库表是一本字典,索引就是目录。没有索引时,查询只能逐行扫描(全表扫描),效率极低。而索引通过特定的数据结构组织关键字段,让查找时间从O(n)降到O(log n)。

哈希表查询速度是O(1),但它有致命缺点:
WHERE id > 100)面试话术:
“哈希索引适合等值查询(如=),但实际业务中范围查询、排序操作更常见,所以InnoDB不用它做主索引”
BST的查询复杂度是O(log n),但存在两大问题:
关键结论:
索引要尽量减少磁盘I/O次数,而BST的树高不可控,显然不满足
B树通过一个节点存储多个数据+指针降低树高度:

但B树仍有缺陷:
B+树在B树基础上做了两项关键改进:
| 场景 | B树 | B+树 |
|---------------|---------------------|---------------------|
| 单行查询 | 可能中途命中返回 | 必须到叶子节点 |
| 范围查询 | 需跨层回溯 | 链表直接遍历 |
| 磁盘I/O | 节点数据多I/O量大 | 非叶子节点更轻量 |
| 全表扫描 | 需遍历所有节点 | 遍历叶子链表即可 |
高频面试题:
Q:为什么B+树比B树更适合数据库?
A:核心是两点:一是非叶子节点不存实际数据,使得单页能放更多索引键,降低树高(减少磁盘I/O);二是叶子节点链表结构让范围查询和全表扫描更高效。
即使懂了数据结构,索引 misuse 仍是性能杀手:
(a,b,c)
WHERE a=1, WHERE a=1 AND b=2WHERE b=2, WHERE c=3WHERE id+1=100 ❌WHERE name=123(name是varchar)❌🚀 高效准备面试:
2025年Java面试宝典(点击下载,含MySQL调优、并发编程等高频考点)
需要购买面试鸭会员?通过👉 面试鸭返利网 👈找我下单,立返25元!已有300+程序员成功薅羊毛~

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

面试鸭小程序码

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

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