如何查看数据库或表的索引?

我怎么看我的数据库是否有任何索引呢?

如何为特定的表格?

要查看特定表的索引,请使用SHOW INDEX:

SHOW INDEX FROM yourtable; 

要查看特定模式中所有表的索引,可以使用INFORMATION_SCHEMA中的STATISTICS表:

 SELECT DISTINCT TABLE_NAME, INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'your_schema'; 

删除where子句将显示所有模式中的所有索引。

如果您想一次查看所有数据库中的所有索引:

 use information_schema; SELECT * FROM statistics; 
 SHOW INDEX FROM mytable FROM mydb; SHOW INDEX FROM mydb.mytable; 

见文件 。

您可以使用此查询来获取索引号以及指定数据库中每个表的索引名称。

 SELECT TABLE_NAME, COUNT(1) index_count, GROUP_CONCAT(DISTINCT(index_name) SEPARATOR ',\n ') indexes FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'mydb' AND INDEX_NAME != 'primary' GROUP BY TABLE_NAME ORDER BY COUNT(1) DESC; 

我build议这个查询:

 SELECT DISTINCT s.* FROM INFORMATION_SCHEMA.STATISTICS s LEFT OUTER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON t.TABLE_SCHEMA = s.TABLE_SCHEMA AND t.TABLE_NAME = s.TABLE_NAME AND s.INDEX_NAME = t.CONSTRAINT_NAME WHERE 0 = 0 AND t.CONSTRAINT_NAME IS NULL AND s.TABLE_SCHEMA = 'YOUR_SCHEMA_SAMPLE'; 

您find所有索引唯一索引。

看待。

对于特定的表格:

 SELECT * FROM sys.indexes WHERE object_id = ( SELECT object_id FROM sys.objects WHERE name = 'yourTableName' ) 

您可以在MySQL工作台中检查您的索引。在性能报告选项卡下,您可以看到系统上所有使用的索引和未使用的索引。 或者您可以启动查询。

 select * from sys.`x $ schema_index_statistics'