MySQL 聚集索引
简介:在本教程中,您将了解MySQL聚簇索引以及如何在InnoDB表中管理聚簇索引。
什么是聚集索引
通常,索引是一个单独的数据结构,例如B-Tree,它存储用于更快查找的键值。 另一方面,聚簇索引实际上就是表。它是一个在物理上强制对表行进行排序的索引。 创建聚簇索引后,将根据用于创建聚簇索引的键列存储表中的所有行。 由于聚簇索引按排序顺序存储行,因此每个表只有一个聚簇索引。MySQL在InnoDB表上聚集了索引
每个InnoDB表都需要一个聚簇索引。聚簇索引有助于一个InnoDB表优化的数据操作,例如SELECT
,INSERT
,UPDATE
和DELETE
。
为InnoDB表定义主键时,MySQL使用主键作为聚簇索引。
如果您没有表的主键,MySQL将搜索UNIQUE
所有键列所在的第一个索引,NOT NULL
并将此UNIQUE
索引用作聚簇索引。
如果InnoDB表没有主键或合适的UNIQUE
索引,MySQL会在内部生成一个隐藏的聚簇索引GEN_CLUST_INDEX
,索引在包含行ID值的合成列上命名。
因此,每个InnoDB表始终只有一个聚簇索引。
除聚簇索引之外的所有索引都是非聚簇索引或二级索引。在InnoDB故事中,辅助索引中的每条记录都包含行的主键列以及非聚集索引中指定的列。MySQL将此主键值用于聚簇索引中的行查找。
因此,具有短主键是有利的,否则二级索引将使用更多空间。通常,自动增量整数列用于主键列。