1 基础知识
1.1 为什么使用 B+树?
1.2、innoDB索引实现
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哪里可以找打索引对应的行数据。