MySQL 索引

68 阅读1分钟

1 基础知识

1.1 为什么使用 B+树?

image.png

image.png

1.2、innoDB索引实现

image.png

2 常见问题

2.1 索引检索

1、B+树索引并不能找到一个具体给定键的具体行。B+树索引能找到的只是被查询数据行所在的页。然后把页读入到内存,再在内存中进行查找,最后得到要查找的数据。

这儿的逻辑应该是通过索引,找到了具体的物理页,然后把物理页读入到内存。

2.2、索引在磁盘上是连续的吗?

www.zhihu.com/question/43…
简单来说,不是,逻辑上是连续的,物理上不是。通过双向链表指针进行链接。
如果内存够大,可以将整个索引一次性加载到内存中,但是如果内存不够,肯定得通过换入换出,从磁盘上加载部分 B+树节点。

2.3、explain 使用的是预估值。

developer.aliyun.com/article/169…
具体的预估方法

2.4、辅助索引

叶子结点并不包含记录的全部数据。叶子节点除了包含键值之外,每个叶子节点的索引行还包含了一个书签,该书签来告诉 innoDB哪里可以找打索引对应的行数据。