MySQL 索引
本文粗略说一下 MySQL 中常见的索引分类。
物理存储角度
- 聚簇索引
- 非聚簇索引
聚簇索引将数据存储与索引放到了一起,找到索引也就找到了数据。非聚簇索引将数据存储与索引分开,索引结构的叶子结点指向了数据对应的行。
在 InnoDB 中,在聚簇索引之上创建的索引,称之为辅助索引,辅助索引叶子结点存储的不是行的物理位置,而是主键值,因此辅助索引访问数据总是需要二次查找的。
一图顶千言,如下图所示:
由于聚簇索引是将数据跟索引结构放在一起的,因此一个表仅有一个聚簇索引。
聚簇索引默认是主键,如果表中没有定义主键,InnoDB 会选择一个唯一非空索引,如果没有这样的索引,InnoDB 会隐式定义一个主键来作为聚簇索引。