在MySQL中,如何判断表的索引是否聚集?

时间:2018-07-05 03:22:06

标签: mysql clustered-index

在MySQL中,如何判断表的索引是否聚集?

我们可以使用show index from table-name来获取有关表索引的信息。但是我发现它不能显示每个索引是群集的还是非群集的。

这是为了If a table in MySQL has any index, must the table have a clustered index?

1 个答案:

答案 0 :(得分:0)

在默认存储引擎InnoDB中,PRIMARY KEY索引始终是聚集索引。

如果您没有PRIMARY KEY,则它是非空列上的第一个UNIQUE KEY索引。

如果在非空列上没有PRIMARY KEY或UNIQUE KEY,则InnoDB具有隐藏的聚集索引。在这种情况下,您无法使用此聚集索引进行查询。

请参见https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html

  

如果表没有PRIMARY KEY或合适的UNIQUE索引,则InnoDB在包含行ID值的合成列上内部生成一个名为GEN_CLUST_INDEX的隐藏的聚集索引。这些行由InnoDB分配给此类表中的行的ID排序。行ID是一个6字节的字段,随着插入新行而单调增加。因此,按行ID排序的行实际上在插入顺序上。

MyISAM是另一个常见的存储引擎。 MyISAM不支持聚集索引。