一、索引的本质与作用
索引是帮助MySQL高效获取数据的数据结构,类似于书籍的目录。它通过减少磁盘I/O次数(即减少数据扫描量)来加速查询,尤其在百万级数据场景下,索引可将查询效率提升数十倍。
核心作用:
-
加速查询:避免全表扫描,快速定位数据。
-
保证数据唯一性:唯一索引可避免重复值。
-
优化排序与分组:索引天然有序,减少排序开销。
二、索引的底层数据结构:B+树
为什么选择B+树?
MySQL索引默认使用B+树而非二叉树、红黑树或B树,原因如下:
| 对比项 | B+树优势 |
|---|---|
| 树高控制 | 节点存储多个键值,树高通常为3~4层,支持千万级数据(如单节点可存约1170个键)。 |
| 范围查询 | 叶子节点通过指针形成有序链表,适合BETWEEN、ORDER BY等操作。 |
| 磁盘I/O优化 | 每次读取一页(16KB),充分利用局部性原理,减少磁盘寻道次数。 |

(图示:B+树


81

被折叠的 条评论
为什么被折叠?



