- 对于
InnoDB
存储引擎来说,在单个页中查找某条记录分为两种情况:
- 以主键为搜索条件,可以使用
Page Directory
通过二分法快速定位相应的用户记录。 - 以其他列为搜索条件,需要按照记录组成的单链表依次遍历各条记录。
- 没有索引的情况下,不论是以主键还是其他列作为搜索条件,只能沿着页的双链表从左到右依次遍历各个页。
-
InnoDB
存储引擎的索引是一棵B+
树,完整的用户记录都存储在B+
树第0
层的叶子节点,其他层次的节点都属于内节点
,内节点
里存储的是目录项记录
。InnoDB
的索引分为两大种:
- 聚簇索引
以主键值的大小为页和记录的排序规则,在叶子节点处存储的记录包含了表中所有的列。
- 二级索引
以自定义的列的大小为页和记录的排序规则,在叶子节点处存储的记录内容是
列 + 主键
。
-
MyISAM
存储引擎的数据和索引分开存储,这种存储引擎的索引全部都是二级索引
,在叶子节点处存储的是列 + 页号
。