Sobes.tech
Back to questions
Senior
4

Как понять, использует ли запрос индекс? Как мониторить неиспользуемые индексы?

Companies where asked
Альфа-БанкАльфа-Банк

Answer from AI

sobes.tech AI

Чтобы понять, использует ли запрос индекс, обычно применяют следующие методы:

  1. EXPLAIN-план запроса — большинство СУБД (например, MySQL, PostgreSQL, Oracle) поддерживают команду EXPLAIN, которая показывает, как СУБД планирует выполнить запрос, включая использование индексов.

  2. Мониторинг выполнения запросов — в некоторых СУБД можно включить профилирование или трассировку, чтобы видеть, какие индексы задействованы.

  3. Статистика использования индексов — многие СУБД ведут статистику по использованию индексов, например, в PostgreSQL есть pg_stat_user_indexes, в MySQL — information_schema.STATISTICS и performance_schema.table_io_waits_summary_by_index_usage.

Для мониторинга неиспользуемых индексов:

  • В PostgreSQL можно запросить pg_stat_user_indexes и сравнить количество сканирований индекса с временем создания.
  • В MySQL можно использовать performance_schema для анализа использования индексов.

Пример запроса EXPLAIN в PostgreSQL:

EXPLAIN SELECT * FROM users WHERE email = 'example@example.com';

Если в плане есть Index Scan, значит индекс используется.

В Java-приложениях, работающих с базой, можно логировать SQL-запросы и анализировать их планы через инструменты СУБД или ORM (например, Hibernate поддерживает вывод плана запросов).