标准答案
- 磁盘或 SSD 访问的成本远高于内存比较,B+ 树用较大的扇出让树高保持很低,查找只需访问少量页。
- B+ 树内部节点主要存键和指针,叶子节点存完整索引项并按顺序链接,适合连续范围扫描。
- 等值查询、BETWEEN、范围条件、ORDER BY 和最左前缀匹配都可以利用 B+ 树的有序性。
- 哈希索引把键映射到桶,等值命中快,但无法从一个哈希值顺序走到相邻值,范围和排序通常无效。
- 索引是否有效还取决于选择性、查询条件、回表成本和优化器估算,不能只因为字段建了 B+ 树就期待所有 SQL 变快。
题目解析
B+ 树的优势不是抽象算法复杂度,而是页式存储下的 I/O 友好性。一个节点能容纳很多键,根和上层节点常驻缓存后,常见查询只需要读取很少的叶子页。
哈希索引并非落后,它在纯等值、内存型或特定引擎场景仍有价值。但业务查询通常需要时间范围、排序、前缀或复合条件,因此关系型数据库普遍以 B+ 树作为通用默认。
常见误区
- 把 B+ 树只解释成“二叉树更快”,忽略它的高扇出、页结构和叶子有序链表。
- 以为哈希索引可以优化 LIKE 前缀、范围筛选或 ORDER BY。