
资料内容:
什么是索引?
在数据库中,索引是帮助存储引擎快速获取数据的⼀种数据结构 ,形象地说就是“数据的⽬录”。
它的设计思路是 “以空间换时间” ,类似书中的⽬录⸺⽆需逐⻚查找,通过索引能快速定位到数据所
在位置,从⽽⼤幅提升数据查询效率。以MySQL为例,不同存储引擎(如InnoDB、MyISAM)会基于
⾃⾝机制实现索引,帮助数据库快速检索数据。
索引的分类?
以下是关于MySQL索引分类的复盘总结,从数据结构、物理存储、字段特性、字段个数 四个维度展
开,补充关键细节与易错点,助⼒你完善⼋股笔记:
⼀、按「数据结构」分类
•
B+tree索引
◦
是MySQL中最常⽤的索引结构(InnoDB、MyISAM默认均基于B+树实现)。
◦
特点:
▪
所有数据(叶⼦节点)按顺序存储,且叶⼦节点间通过链表相连,⽀持范围查询、排序操作
(如 order by )。
▪
⾮叶⼦节点仅存索引键,叶⼦节点存数据或主键(⼆级索引),查询效率稳定(时间复杂度
O(log n)) 。
◦
适⽤场景:⼤部分业务查询(等值、范围、排序)。
•
Hash索引
◦
基于哈希表实现,通过“键→哈希值→桶”的映射快速定位数据。
◦
特点:
▪
等值查询极快(时间复杂度O(1)),但不⽀持范围查询、排序 (哈希值是⽆序的)。
▪
存在“哈希冲突”,需通过链表解决。
◦
适⽤场景:MySQL的Memory引擎默认使⽤;InnoDB中“⾃适应哈希索引”(⾃动对热点数据
构建哈希索引,属于优化⼿段)。