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

In MySQL, how can we tell if an index of a table is clustered or not?

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

我们可以使用 show index from table-name 获取有关 table 的索引的信息。但是我没发现它显示每个索引是聚簇的还是非聚簇的。

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

在默认的存储引擎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

If the table has no PRIMARY KEY or suitable UNIQUE index, InnoDB internally generates a hidden clustered index named GEN_CLUST_INDEX on a synthetic column containing row ID values. The rows are ordered by the ID that InnoDB assigns to the rows in such a table. The row ID is a 6-byte field that increases monotonically as new rows are inserted. Thus, the rows ordered by the row ID are physically in insertion order.

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