数据库索引的简单分类

数据库的索引可以简单的分为四类:

  • 主键索引。针对表的主键所创建的索引,这种索引是默认自动创建的,而且只能有一个。

  • 唯一索引。避免表中某列的值重复,可以有多个唯一索引,在为某字段限定唯一约束时,会自动创建一个唯一索引。

  • 常规索引。一般的用于快速定位检索数据的索引,可以有多个。

  • 全文索引。查找的是文本中的关键词,用FULLTEXT关键字指定。

当然,上面的几类索引并不都是经常使用的。

在MySQL的InnoDB存储引擎中,根据索引的存储形式,又可以分为2类:

  • 聚集索引。将数据和索引存储放到一起,索引结构的叶子节点保存行数据,因此聚集索引有且仅有一个。

  • 二级索引。这种索引不与数据存储在一起,索引结构的叶子节点关联的是对应行数据的主键。

默认的情况下,主键索引就是聚集索引。实际上,存在没有主键的情况,聚集索引的选取规则如下:

  1. 有主键索引,则选择主键索引作为聚集索引。

  2. 没有主键索引,使用第一个唯一索引作为聚集索引。

  3. 如果没有主键索引或合适的唯一索引,InnoDB生成一个隐藏的rowid作为聚集索引。

通过这个规则保证聚集索引一定存在且唯一。

在根据二级索引对应的列进行查询时,不能直接通过主键上的聚集索引查询,需要首先通过字段对应的二级索引查找到对应行的主键id,再根据id回到聚集索引上查询到正确的行数据,因此需要进行两次索引查询(回表查询)。

如果二级索引与聚集索引一样,都直接把行数据存储到叶子节点上,数据会存储多份,造成空间的膨胀浪费。

posted @ 2024-07-30 09:43  随机生成一个id  阅读(1)  评论(0编辑  收藏  举报