聚簇索引 和 非聚簇索引
-
聚簇索引
InnoDB采用- 将 主键 组织到一棵
主键B+树中,叶子节点直接存储行数据 - 将 其余索引列 组织到一颗
辅助B+树中,叶子节点存储主键
- 将 主键 组织到一棵
- 两种查询
- 若对 主键 进行条件搜索
WHERE id = 14- 则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据
- 若对 name列 进行条件搜索,则需要两个步骤
- 第一步:在
辅助B+树中检索name,到达其叶子节点获取对应的主键 - 第二步:使用主键在
主键B+树中再执行一次检索,最终到达叶子节点即可获取整行数据
- 第一步:在
- 若对 主键 进行条件搜索
- 好处
- 在移动行时无须更新
辅助B+树中的叶子节点,因为主键是不变的
- 在移动行时无须更新
-
非聚簇索引
MyISM采用主键B+树和辅助B+树节点的结构完全一致,只是存储的内容不同而已- 两颗B+树的叶子节点都使用一个地址指向真正的表数据
- 只有一种查询
- 进行条件搜索
- 第一步:在对应B+树中检索,到达其叶子节点获取数据的地址
- 第二步:使用地址获取行数据
- 进行条件搜索