数据库答题框架数据结构
Redis为什么使用跳表而不是用B+树?
B+ 树适合磁盘索引,因为非叶子节点只保存 key 和指针,单页能放更多索引项,树高更低,随机 I/O 更少。 所有数据在叶子节点,且叶子节点有链表,范围查询和排序扫描更稳定;哈希索引虽然等值快,但不支持范围和有序遍历。
面试数据库
答题框架
当前只提供答题框架,不代表已经完成事实与工程边界复核。
这题可以按「结论 -> 原理 -> 场景 -> 风险」来答,重点放在数据库里的可落地理解。
答题要点:
1. B+ 树适合磁盘索引,因为非叶子节点只保存 key 和指针,单页能放更多索引项,树高更低,随机 I/O 更少。
2. 所有数据在叶子节点,且叶子节点有链表,范围查询和排序扫描更稳定;哈希索引虽然等值快,但不支持范围和有序遍历。
3. 面试可以结合 InnoDB:聚簇索引叶子节点存整行,二级索引叶子节点存主键,回表就是用主键再查聚簇索引。
容易被追问:
- 什么情况下会回表?
- 联合索引为什么有最左前缀?
注意事项:
- 不要只说 B+ 树快,要说快在哪里:页大小、树高、I/O 和范围查询。
答题练习
- 1B+ 树适合磁盘索引,因为非叶子节点只保存 key 和指针,单页能放更多索引项,树高更低,随机 I/O 更少。
- 2所有数据在叶子节点,且叶子节点有链表,范围查询和排序扫描更稳定;哈希索引虽然等值快,但不支持范围和有序遍历。
- 3面试可以结合 InnoDB:聚簇索引叶子节点存整行,二级索引叶子节点存主键,回表就是用主键再查聚簇索引。
常见错误
- 不要只说 B+ 树快,要说快在哪里:页大小、树高、I/O 和范围查询。
可能追问
- 什么情况下会回表?
- 联合索引为什么有最左前缀?
来源记录
- 原始来源
- 小林coding
- 来源页面
- Redis面试题
- 最近收录
- 2026-07-04
- 官方复核
- Redis面试题、数据结构、讲一下Redis底层的数据结构、ZSet用过吗、Redis 中 set和zset区别是什么?、Zset 底层是怎么实现的?、跳表是怎么实现的?、跳表是怎么设置层高的?、Redis为什么使用跳表而不是用B+树?、压缩列表是怎么实现的?、介绍一下 Redis 中的 listpack、哈希表是怎么扩容的?