面试回答:
在 MySQL 中,哈希索引和 B+ 树索引是两种底层实现完全不同的索引结构,哈希索引一般用于精确的等值查找,B+索引则多用于除了精确的等值查找外的其他查找,在大多数情况下,我们选择使用的是B+树索引。他们的区别有:
- 由于哈希表是无序的,所以哈希索引不支持排序
- 哈希索引不支持范围查找
- 还行索引不支持模糊查询以及多列索引的最左前缀匹配
- 哈希表中会存在哈希冲突,哈希索引在性能方面是不稳定的,而B+树索引的性能是相对稳定的,每次查询都是从根节点到叶子结点
以下从 7 个核心维度对比两者的区别,并结合实际场景说明选择逻辑:
一、底层数据结构与查找原理
这是两者最根本的差异,直接决定了查询的 “效率逻辑”。
| 对比项 | 哈希索引(Hash Index) | B+ 树索引(B+ Tree Index) |
|---|---|---|
| 底层结构 | 哈希表(键值对结构:哈希值 → 行数据地址) |
平衡多路查找树(分层结构:根节点 → 非叶子节点 → 叶子节点) |
| 查找原理 | 1. 对查询的 “索引键” 计算哈希值(如 hash(id)=0x3F);2. 通过哈希值定位到哈希表的 “桶”; 3. 若有哈希冲突(不同键同哈希值),遍历桶内链表找到目标行地址。 |
1. 从根节点开始,根据索引键大小对比,选择下一层子节点; 2. 逐层向下,最终在叶子节点找到目标数据(InnoDB 主键索引直接存行数据,普 |

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



