在MySQL中,我们如何判断表的索引是否是群集的?
我们可以使用show index from table-name获取有关表的索引的信息。但我发现它没有显示每个索引是聚集的还是非聚集的。
这是为了If a table in MySQL has any index, must the table have a clustered index?的目的
发布于 2018-07-05 03:37:58
在默认存储引擎InnoDB中,主键索引始终是聚集索引。
如果您没有主键,它是非空列上的第一个唯一键索引。
如果您在非空列上没有主键或唯一键,那么InnoDB有一个隐藏的聚集索引。在这种情况下,不能使查询使用此聚集索引。
请参阅https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html
如果表没有主键或合适的唯一索引,InnoDB在包含行ID值的合成列上生成名为GEN_CLUST_INDEX的隐藏聚集索引。行由InnoDB分配给这样一个表中的行的ID排序。行ID是一个6字节的字段,在插入新行时单调地增加。因此,行ID排序的行实际上是按插入顺序排列的。
MyISAM是另一个常见的存储引擎。MyISAM不支持聚集索引。
https://stackoverflow.com/questions/51182951
复制相似问题