My SQL 中Innodb聚簇索引和MyISAM非聚簇索引

Innodb的索引储存是聚簇索引。Innodb里面没有非聚簇索引,更加准确的叫法是辅助索引。
非聚簇索引针对MyISAM引擎而言。

每个InnoDB表都有一个称之为聚簇索引(clustered index)的特殊索引,存储记录行数据。通常,聚簇索引和主索引是近义的。

l 当在表上定义一个主键时, InnoDB把它当聚簇索引用。为每个表都定义一个主键,如果没有逻辑上唯一且NOT-NULL的列,则添加一个自动增长(auto-increment)的列

l 如果没为表定义主键,mysql定位所有索引列都为NOT NULL的第一个唯一索引,并把它当聚簇索引使用。

l 如果表没有主键或合适的唯一索引,InnoDB会在某个包含row ID值的合成列上生成一个隐藏的聚簇索引。记录行按表中InnoDB赋予行的row ID排序。row ID为一6字节域,当有新行被插入时会自动增加,所以,按row ID排序的行物理上为按插入顺序排序。


版权声明:本文为qq_40367673原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。