MySQL面试题——索引2nd

总结于JavaGuide

知识点总结

为什么 InnoDB 没有使用哈希作为索引的数据结构?

为什么 InnoDB 没有使用 B 树作为索引的数据结构?

什么是覆盖索引?

回答

1. 为什么 InnoDB 没有使用哈希作为索引的数据结构?

哈希索引仅支持等值查询 ,无法满足范围查询、排序、前缀匹配等高频业务需求;且 InnoDB 采用聚簇索引模型,依赖有序的数据结构 来组织行数据,哈希的无序性无法适配。此外,InnoDB 仅提供自适应哈希索引作为辅助优化,而非主索引结构。

2. 为什么 InnoDB 没有使用 B 树作为索引的数据结构?

InnoDB 选择 B+ 树而非 B 树,核心是适配磁盘 IO 特性 :B 树的非叶子节点会存储数据,导致单节点能容纳的索引项更少,树的高度更高,磁盘 IO 次数更多;B+ 树的非叶子节点仅存索引键,叶子节点存储完整数据(聚簇索引)且通过双向链表连接,既降低了树高、减少了 IO,又能高效支持范围查询和全表扫描,更契合业务需求。

3. 什么是覆盖索引?

覆盖索引是指索引中包含了查询所需的全部列 ,查询时无需回表到聚簇索引中获取额外数据,直接通过该索引即可完成查询。其核心优势是减少磁盘 IO 次数 ,大幅提升查询效率。例:联合索引 (id, name),执行 select name from user where id = 1 时,该索引即为覆盖索引。

相关推荐
数据知道4 分钟前
PostgreSQL 核心原理:系统内部的对象寻址机制(OID 对象标识符)
数据库·postgresql
2501_9011478319 分钟前
面试必看:优势洗牌
笔记·学习·算法·面试·职场和发展
李日灐21 分钟前
C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
开发语言·数据结构·c++·后端·面试·红黑树·自平衡二叉搜索树
倔强的石头_34 分钟前
关系数据库替换用金仓:数据迁移过程中的完整性与一致性风险
数据库
Elastic 中国社区官方博客40 分钟前
使用 Groq 与 Elasticsearch 进行智能查询
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
穿过锁扣的风1 小时前
一文搞懂 SQL 五大分类:DQL/DML/DDL/DCL/TCL
数据库·microsoft·oracle
l1t1 小时前
DeepSeek总结的SNKV — 无查询处理器的 SQLite 键值存储
数据库·sqlite·kvstore
洛豳枭薰1 小时前
MySQL 梳理
数据库·mysql
Bella的成长园地1 小时前
为什么c++中的条件变量的 wait() 函数需要配合while 循环或谓词?
c++·面试
九.九1 小时前
CANN 算子生态的底层安全与驱动依赖:固件校验与算子安全边界的强化
大数据·数据库·安全