Узнайте статистику использования индексов 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 здесь