在mysql中,如何判断表的索引是否是集群的?

apeeds0o  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(480)

在mysql中,如何判断表的索引是否是集群的?
我们可以用 show index from table-name 获取有关表索引的信息。但我没有发现它显示每个索引是聚集的还是非聚集的。
如果mysql中的表有索引,那么该表必须有聚集索引吗?

gudnpqoy

gudnpqoy1#

在默认的存储引擎innodb中,主键索引总是聚集索引。
如果没有主键,则它是非空列上的第一个唯一键索引。
如果在非空列上没有主键或唯一键,那么innodb有一个隐藏的聚集索引。在这种情况下,不能使查询使用此聚集索引。
看到了吗https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html
如果表没有主键或合适的唯一索引,innodb会在包含行id值的合成列上内部生成一个名为gen\u clust\u index的隐藏聚集索引。这些行是按innodb分配给这样一个表中的行的id排序的。行id是一个6字节的字段,随着新行的插入而单调增加。因此,按行id排序的行在物理上是按插入顺序排列的。
myisam是另一种常见的存储引擎。myisam不支持聚集索引。

相关问题