- 我们平时创建的索引唯一键索引,复合索引,前缀索引都是非聚簇索引,有的也叫辅助索引(secondary index).其数据结构是B+树。
- 在MySQL中,聚簇索引没有语句可以生成,在 InnoDB中,数据是按照主键的顺序来进行存储的。叶子节点就是存放每条记录的。由于表所有数据只能按照一个B+树进行排序,每个表只能有一个聚簇索引。
- 在MySQL innoDB中,聚簇索引默认就是主键索引。
- 如果没有主键,会找一个不为空的唯一索引当该表的聚簇索引。如果没有这样的索引,InnoDB会隐式新建一个索引字段。
- 自增ID与UUID的区别,自增ID由于存储连续,写入性能更高,UUID会频繁移动数据保持B+树结构。
- 每新建一个非聚簇索引就会增加一个B+树结构,该叶子节点存放了对应索引字段的指和聚簇索引的值,如果条件查询使用该索引,查询会先查询非聚簇索引找到值,如果值会查询的字段直接返回,否则还会去查询聚簇索引的B+树查询到完整的记录,增加IO次数。
- 如果添加索引,后面插入数据开销会变大,因为需要维护B+树。
聚簇与非聚簇索引
最新推荐文章于 2024-07-14 02:50:55 发布