MySQL 8.0版本说明
MySQL 8.0源代码文档10bet官方网站
每一个InnoDB
表有一个特殊的索引,称为聚集索引,用于存储行数据。通常,聚集索引等同于主键。要从查询、插入和其他数据库操作中获得最佳性能,了解如何获得最佳性能非常重要InnoDB
使用聚集索引来优化常用的查找和DML操作。
当你定义
主键
在桌子上,InnoDB
使用它作为聚集索引。应该为每个表定义一个主键。如果没有使用主键的逻辑惟一非空列或列集,则添加一个自动递增列。自动递增列值是唯一的,并在插入新行时自动添加。如果你没有定义
主键
对于一个表,InnoDB
使用第一个独特的
索引,其中所有键列定义为非空
作为聚类索引。如果一个表没有
主键
或合适的独特的
指数,InnoDB
生成一个名为GEN_CLUST_INDEX
在包含行ID值的合成列上。的行ID对行进行排序InnoDB
分配。行ID是一个6字节的字段,随着新行插入而单调增加。因此,按行ID排序的行在物理上是按插入顺序排列的。
聚集索引以外的索引称为二级索引。在InnoDB
,辅助索引中的每个记录包含行的主键列,以及为辅助索引指定的列。InnoDB
使用此主键值搜索聚集索引中的行。
如果主键很长,那么二级索引会使用更多的空间,因此使用较短的主键是有利的。
以便利用指导方针InnoDB
群集索引和二级索引,参见第8.3节“优化和索引”.