Skip to content

MySQL 索引原理

索引是帮助 MySQL 高效获取数据的数据结构。

1. 索引数据结构

B+ 树

MySQL InnoDB 引擎使用 B+ 树作为索引结构。

  • 非叶子节点只存储键值,叶子节点存储数据。
  • 叶子节点之间通过双向链表连接,支持范围查询。

Hash 索引

基于哈希表,查询速度快 (O(1)),但不支持范围查询。

2. 聚簇索引 vs 非聚簇索引

  • 聚簇索引:数据存储在叶子节点中(主键索引)。
  • 非聚簇索引:叶子节点存储主键值,需要回表查询(二级索引)。

3. 索引优化原则

  • 最左前缀法则
  • 索引覆盖
  • 避免索引失效 (如对索引字段进行函数计算)

学无止境,持续更新中... | 基于 VitePress 构建