Поиск и удаление неиспользуемых индексов в MySQL
Рассмотрим простой и быстрый способ получить потенциальный прирост производительности и оптимизировать БД путём удаления неиспользуемых индексов.
Так или иначе спустя какое-то время разработки продукта (особенно у достаточно взрослых проектов) может возникнуть ситуация, когда некоторые индексы либо перестают использоваться в пользу новых, либо не используются вовсе из-за ошибок проектирования БД.
Эти гадкие неиспользуемые индексы (помимо того что просто занимают какое-то место на диске) несут в себе некоторую опасность в плане влияния на скорость выполнения запросов.
Лучший способ определить неиспользуемые индексы — использовать sys схему:
select * from sys.schema_unused_indexes;
Так мы получим список всех неиспользуемых индексов на сервере, однако здесь нужно быть осторожным и помнить, что некоторые из этих индексов могу служить для ограничения уникальности. В таком случае они не используются в запросах, попадают в sys.schema_unused_indexes, но не являются бесполезными.