MySQL Оператор выбора не возвращает таблицы с нулевыми индексами - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь выполнить этот запрос, чтобы узнать количество индексов в каждой таблице. Однако, похоже, что он не возвращает никаких таблиц с нулевыми индексами. (Выполнение этого на Ma c 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;

Я попытался изменить значения в счетчике, но безрезультатно. Муравьиные советы или советы приветствуются!

1 Ответ

4 голосов
/ 05 марта 2020

В таблице 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
...