10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

15.6.2.1集群和二级索引

每一个InnoDB表有一个特殊的索引,称为聚集索引,用于存储行数据。通常,聚集索引等同于主键。要从查询、插入和其他数据库操作中获得最佳性能,了解如何获得最佳性能非常重要InnoDB使用聚集索引来优化常用的查找和DML操作。

  • 当你定义主键在桌子上,InnoDB使用它作为聚集索引。应该为每个表定义一个主键。如果没有使用主键的逻辑惟一非空列或列集,则添加一个自动递增列。自动递增列值是唯一的,并在插入新行时自动添加。

  • 如果你没有定义主键对于一个表,InnoDB使用第一个独特的索引,其中所有键列定义为非空作为聚类索引。

  • 如果一个表没有主键或合适的独特的指数,InnoDB生成一个名为GEN_CLUST_INDEX在包含行ID值的合成列上。的行ID对行进行排序InnoDB分配。行ID是一个6字节的字段,随着新行插入而单调增加。因此,按行ID排序的行在物理上是按插入顺序排列的。

聚类索引如何提高查询速度

通过聚集索引访问行非常快,因为索引搜索直接指向包含行数据的页面。如果表很大,与使用与索引记录不同的页存储行数据的存储组织相比,集群索引体系结构通常节省一个磁盘I/O操作。

二级索引与聚类索引的关系

聚集索引以外的索引称为二级索引。在InnoDB,辅助索引中的每个记录包含行的主键列,以及为辅助索引指定的列。InnoDB使用此主键值搜索聚集索引中的行。

如果主键很长,那么二级索引会使用更多的空间,因此使用较短的主键是有利的。

以便利用指导方针InnoDB群集索引和二级索引,参见第8.3节“优化和索引”