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

相关推荐
怕浪猫5 小时前
第 1 章 FDE的崛起
面试
zlwool6 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
小灰灰搞电子7 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
软件聚导航9 小时前
「聚小软 AI 助手」技术升级:从数据库检索到 RAG 知识库问答
前端·数据库·mysql·微信小程序·小程序·ai编程·rag
2601_960906729 小时前
1X发布自己的世界模型1XWM
mysql·mongodb·rabbitmq·memcached
学习星球10 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
GoppViper10 小时前
RDF资源描述框架深度解析:语义Web的数据基石与实战逻辑
前端·数据库
2601_9621741710 小时前
Redis 简介
数据库·redis·wpf
夜雪一千11 小时前
MySQL 各种数据同步方案全梳理:从简单复制到异构同步实战
数据库·mysql
ruleslol11 小时前
MySQL: OR查询为什么会导致索引失效
mysql