8 ответов:
чтобы увидеть индекс для конкретной таблицы, используйте SHOW INDEX:
SHOW INDEX FROM yourtable;чтобы увидеть индексы для всех таблиц в определенной схеме, вы можете использовать таблицу статистики из INFORMATION_SCHEMA:
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;
Я предлагаю этот запрос:
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';вы нашли весь индекс только.
связи.
чтобы проверить все отключенные индексы на db
SELECT INDEX_SCHEMA, COLUMN_NAME, COMMENT FROM information_schema.statistics WHERE table_schema = 'mydb' AND COMMENT = 'disabled'
это работает в моем случае для получения имени таблицы и имени столбца в соответствующей таблице для индексированных полей.
SELECT TABLE_NAME , COLUMN_NAME, COMMENT FROM information_schema.statistics WHERE table_schema = 'database_name';
вы можете проверить свои индексы в MySQL workbench.на вкладках отчеты о производительности можно просмотреть все используемые и неиспользуемые индексы в системе. или вы можете запустить запрос.
select * from sys.schema_index_statistics;
Comments