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 时,该索引即为覆盖索引。

相关推荐
小徐不徐说8 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
Yuzhiyuxia8 小时前
【AI Agent面试系列】AI Agent记忆机制知识点1
人工智能·面试·职场和发展
论文复现现场9 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__10 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
考研保研资料分享11 小时前
2025公卫保研清华专硕:三校考核、英文读译与择校复盘
面试
心梦缘-雪雁11 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk12 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW12 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB12 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_12 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学