【发布时间】:2019-06-24 01:30:29
【问题描述】:
有没有办法显式确定现有 InnoDB 表中的聚集索引。我知道文档中列出的确定聚集索引的规则,但我想知道是否有办法在现有表中显式检查它。
【问题讨论】:
标签: mysql innodb clustered-index
有没有办法显式确定现有 InnoDB 表中的聚集索引。我知道文档中列出的确定聚集索引的规则,但我想知道是否有办法在现有表中显式检查它。
【问题讨论】:
标签: mysql innodb clustered-index
如您所见,InnoDB 表始终使用 PRIMARY KEY 或第一个非 NULL UNIQUE KEY 作为其聚集索引。
如果表没有这两个,它会生成自己的聚集索引,并将其称为“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_* 表应该存在。见dev.mysql.com/doc/refman/5.6/en/innodb-i_s-tables.html