【数据库篇04】mysql优化-索引

38 阅读1分钟

什么是索引?

索引是帮助Mysql高效获取数据的数据结构(是有序),是满足特定查询算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据。

二叉树

image.png

索引底层的数据结构

image.png

image.png

时间复杂度角度:左侧比较平衡的例子是logN,而右边的是O(n)

红黑树:节点是比较平衡的logN时间复杂度,每层只有两个子节点

image.png

如果数据是1000万,如果是使用红黑树,那么红黑树的深度会非常高。那么查询的效率也不高

B-Tree是一种多叉路衡查找树,相对二叉树,b树每个节点可以有多个分支(多叉)。以一颗最大度数为5的b树为例,每个节点最多存储4个key

image.png

B+Tree是在B数基础上的一种优化,使其更适合实现外存储索引结构,InnDB存储引擎就是B+树实现其索引结构

image.png

B树和B+树对比:

  • 磁盘读写代价B+更低
  • 查询效率B+更加稳定
  • B+树便于扫库和区间查询