首页 > 解决方案 > MySQL Select 语句不返回索引为零的表

问题描述

我正在尝试运行此查询以找出每个表中的索引数。但是,它似乎没有返回任何索引为零的表。(在 Mac Workbench 上运行)

SELECT TABLE_NAME,
   COUNT(1) index_count,
   GROUP_CONCAT(index_name SEPARATOR ',\n ') indexes
   FROM INFORMATION_SCHEMA.STATISTICS
   WHERE TABLE_SCHEMA = '<my_schema>'
   GROUP BY TABLE_NAME;

我试图更改计数内的值,但无济于事。蚂蚁提示或建议表示赞赏!

标签: mysqlsqlmysql-workbenchinformation-schema

解决方案


STATISTICS表只有索引行;如果一个表没有任何索引,它就不会在那里,所以只查询那个表不会返回任何东西。

您需要左加入TABLES表格,STATISTICS以便获得所有表格。

SELECT t.table_name, COUNT(s.index_name) index_count, IFNULL(GROUP_CONCAT(s.index_name SEPARATOR ',\n '), '') indexes
FROM INFORMATION_SCHEMA.TABLES AS t
LEFT JOIN INFORMATION_SCHEMA.STATISTICS AS s ON t.table_schema = s.table_schema AND t.table_name = s.table_name
WHERE t.table_schema = '<my_schema>'
GROUP BY t.table_name

推荐阅读