MySQL Select 语句不返回索引为零的表
MySQL Select statement not returning tables with zero indexes
我正在尝试 运行 这个查询,以便找出每个 table 中的索引数。但是,它似乎没有返回任何索引为零的 table。 (运行 这个在 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;
我试图更改 count 中的值,但无济于事。感谢 Ant 提示或建议!
STATISTICS
table 只有索引行;如果 table 没有任何索引,它不会在那里,所以只查询 table 不会 return 任何东西。
您需要左加入 TABLES
table 和 STATISTICS
才能获得所有 table。
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
我正在尝试 运行 这个查询,以便找出每个 table 中的索引数。但是,它似乎没有返回任何索引为零的 table。 (运行 这个在 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;
我试图更改 count 中的值,但无济于事。感谢 Ant 提示或建议!
STATISTICS
table 只有索引行;如果 table 没有任何索引,它不会在那里,所以只查询 table 不会 return 任何东西。
您需要左加入 TABLES
table 和 STATISTICS
才能获得所有 table。
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