Ответ
Основной инструмент для анализа использования индексов — оператор EXPLAIN (или EXPLAIN ANALYZE для более детальной информации).
Пример в MySQL:
EXPLAIN SELECT id, name FROM users WHERE email = 'user@example.com' AND active = 1;
Ключевые поля в выводе EXPLAIN:
possible_keys: Какие индексы могли бы быть использованы.key: Какой индекс фактически был использован.key_len: Длина используемой части индекса.type: Тип соединения (например,ref,range,index,ALLдля полного сканирования).rows: Оценочное количество строк для проверки.
Дополнительные команды для работы с индексами:
-- Показать все индексы для таблицы
SHOW INDEX FROM users;
-- Принудительно предложить оптимизатору использовать конкретный индекс
SELECT * FROM users USE INDEX (idx_email) WHERE email LIKE 'a%';
-- Проанализировать таблицу для обновления статистики, используемой оптимизатором
ANALYZE TABLE users;
Практический пример анализа: Если EXPLAIN показывает type: ALL для большой таблицы, это признак отсутствия подходящего индекса. Создание индекса по полям WHERE или JOIN обычно решает проблему.
-- Создание составного индекса для запроса выше
CREATE INDEX idx_email_active ON users(email, active);
-- После этого повторный EXPLAIN должен показать использование этого индекса (key: idx_email_active).