聚簇索引(Clustered Indexes)
每一张InnoDB表都有一个聚簇索引存储行数据。通常,聚簇索引等同于主键。
聚簇索引上的数据是按照聚簇索引的顺序排序存储的。
了解InnoDB如何使用聚簇索引,对于优化数据库查询和其他操作非常的重要。
- 如果定义了主键,InnoDB会使用主键作为聚簇索引。
- 如果没有定义主键,InnoDB会使用第一个所有字段都NOT NULL的唯一索引作为聚簇索引。
- 如果表没有PRIMARY KEY或合适的UNIQUE索引,InnoDB会生成一个名为GEN_CLUST_INDEX的隐藏列作为聚簇索引。
二级索引(Secondary Indexes)
- 二级索引中的每一条索引记录都包含了聚簇索引的值,以便在搜索到相关的二级索引后,再用该二级索引上存储的聚簇索引的值,去聚簇索引中找到对应的数据行。
- 因此,如果主键索引的值需要太多的存储空间,那么二级索引所消耗的空间也会更大。因此,尽量选择较短的主键索引是更加明智的选择。