Узнайте статистику использования индексов MySQL?
можно ли узнать, как часто использовался индекс таблицы MySQL?
У меня есть несколько индексов для таблицы, и я хотел бы узнать, есть ли indice, которые не используются MySQL.
4 ответов
Примечание: этот ответ больше не действителен по состоянию на 5.5.3!
см.https://stackoverflow.com/a/43205887/1251127
оригинальный ответ ниже.
В настоящее время MySQL не предлагает статистику использования индекса.
один из способов генерировать эту статистику самостоятельно-это регистрировать все запросы (будьте осторожны с дополнительным вводом-выводом здесь) и анализировать их. Фирконом есть хороший инструмент для этого, pt-index-usage.
Да, это так. Вы должны запросить Производительность-Схемы:
select * from performance_schema.table_io_waits_summary_by_index_usage
where object_schema = 'your_schema'
столбец count_star показывает, сколько раз каждый индекс использовался с момента запуска MySQL. Если вы добавите следующее, Вы получите никогда не используемые индексы:
and count_star = 0
дополнение к ответу @user1970667, вы также можете использовать:
select * from sys.schema_unused_indexes;
чтобы получить список неиспользуемых индексов.
Я не думаю, что это возможно, индекс идет с DDL, поэтому он является частью таблицы, я не верю, что вы можете сделать статистику о том, сколько раз индекс используется или как запросы mane были применены к определенной строке. Если вы хотите узнать больше об индексе в таблице / запросе, вы всегда можете использовать команду:
explain select * from table
но это не статистика
дополнительная информация о explain здесь