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