MySQL学习实践(三) -- MySQL索引

2024-09-15

MySQL学习实践,本篇学习梳理MySQL索引。

1. 背景

本篇梳理学习MySQL索引。

说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。

2. 索引的常见数据结构

几种常见的实现索引的数据结构:

  • 哈希表
    • 比较适合等值查询场景;但范围/区间查询效率较低
  • 有序数组
    • 等值查询范围查询场景性能较好,但插入新记录需移动后续数据,效率较低
    • 适用于静态存储引擎(存好就不会修改的数据)
  • 搜索树
    • 查找、插入的时间复杂度都为O(logN),能有效减少搜索次数,也能较好地满足区间查询
  • 跳表、LSM树
    • 跳表相较于搜索树,效率在同一个数量级(O(logN)),但从实现的角度来说简单许多
    • LevelDB就是基于LSM树结构,其中的memtable就是基于跳表实现,之前的学习笔记也有相关记录:leveldb学习笔记(四) – memtable结构实现

3. InnoDB引擎的索引

在MySQL中,索引是在存储引擎层实现的。

InnoDB引擎使用了B+树索引模型,所以数据都是存储在B+树中的。每一个索引在 InnoDB 里面对应一棵 B+ 树。

4. 小结

5. 参考

1、MySQL实战45讲 深入浅出索引



Comments