Mysql InnoDB:在现有表中查找聚集索引

Mysql InnoDB:在现有表中查找聚集索引,mysql,innodb,clustered-index,Mysql,Innodb,Clustered Index,是否有方法显式确定现有InnoDB表中的聚集索引。我知道文档中列出的确定聚集索引的规则,但我想知道是否有办法在现有表中显式检查聚集索引。如您所知,InnoDB表始终使用主键或第一个非空唯一键作为其聚集索引 如果表中没有这两个,它将生成自己的聚集索引,并将其称为“GEN_CLUST_index” mysql> create table test.testy ( i int ); -- no eligible clustered index mysql> select t.name a

是否有方法显式确定现有InnoDB表中的聚集索引。我知道文档中列出的确定聚集索引的规则,但我想知道是否有办法在现有表中显式检查聚集索引。

如您所知,InnoDB表始终使用主键或第一个非空唯一键作为其聚集索引

如果表中没有这两个,它将生成自己的聚集索引,并将其称为“GEN_CLUST_index”

mysql> create table test.testy ( i int ); -- no eligible clustered index

mysql> select t.name as table_name, i.name as index_name 
  from information_schema.innodb_sys_tables t 
  join information_schema.innodb_sys_indexes i using (table_id) 
  where i.name = 'GEN_CLUST_INDEX';
+------------+-----------------+
| table_name | index_name      |
+------------+-----------------+
| test/testy | GEN_CLUST_INDEX |
+------------+-----------------+

谢谢。虽然我的机器上不存在innodb_sys_tables表,但您为我指明了正确的方向。我查看了“information_schema.innodb_INDEX”,在那里找到了GEN_CLUST_索引。是否有一个表对于每个innodb表都有列聚集索引?您使用的是什么版本?innodb_sys*表应该在MySQL 5.6及更高版本中出现。看,我正在使用版本8。我想他们改名了。是的,他们在8.0中做了很多小改动,破坏了向后兼容性,而我还没有足够的8.0经验来记住它们。