MySQL Clustered Index

摘要:在本教程中,您将了解 MySQL 聚集索引以及如何在 InnoDB 表中管理聚集索引。

MySQL聚集索引简介

通常,索引是一种单独的数据结构,例如 B 树,它存储键值以加快查找速度。

另一方面,聚集索引就是表。它是一个索引,强制对表的行进行物理排序。

创建聚集索引后,表中的所有行将根据用于创建聚集索引的键列进行存储。

由于聚集索引按排序顺序存储行,因此每个表只有一个聚集索引。

InnoDB 表上的 MySQL 聚集索引

每个 InnoDB 表都需要一个聚集索引。聚集索引帮助 InnoDB 表优化数据操作,例如SELECTINSERTUPDATEDELETE

当为InnoDB表定义主键时,MySQL使用主键作为聚集索引。

如果表没有主键,MySQL 将搜索第一个所有键列都不为NOT NULL UNIQUE索引,并使用该UNIQUE索引作为聚集索引。

如果 InnoDB 表没有主键或合适的UNIQUE索引,MySQL 会在包含行 ID 值的合成列上内部生成一个名为GEN_CLUST_INDEX的隐藏聚集索引。

因此,每个 InnoDB 表始终有一个且只有一个聚集索引。

除聚集索引外的所有索引都是非聚集索引或二级索引。在 InnoDB 表中,辅助索引中的每条记录都包含该行的主键列以及非聚集索引中指定的列。 MySQL 使用此主键值在聚集索引中进行行查找。

因此,主键较短是有利的,否则二级索引将使用更多空间。通常,自动递增整数列用作主键列。

概括

  • 聚簇索引是表本身,它强制表中行的顺序。
  • InnoDB 表始终具有聚集索引。
本教程有帮助吗?