Ответ
Оператор EXPLAIN показывает план выполнения SQL-запроса, который генерирует СУБД. Это основной инструмент для анализа и оптимизации производительности запросов.
Что показывает план выполнения?
- Порядок доступа к таблицам (какая таблица читается первой).
- Используемые индексы (или факт полного сканирования таблицы).
- Типы соединений (JOIN):
NESTED LOOPS,HASH JOIN,MERGE JOIN. - Оценочная стоимость операций и количество строк.
Пример использования:
EXPLAIN SELECT * FROM orders WHERE customer_id = 123;
Пример вывода (упрощённо):
-> Index lookup on orders using idx_customer (customer_id=123) (cost=0.35 rows=1)
Это означает, что запрос использует индекс idx_customer для эффективного поиска, а не сканирует всю таблицу.
Практическое применение:
- Выявление «узких мест»: Поиск операций с высокой оценочной стоимостью (например,
Full Table Scan). - Проверка использования индексов: Убедиться, что запрос использует созданные индексы.
- Сравнение планов: Оценить, как изменение запроса или добавление индекса повлияет на план.
EXPLAIN ANALYZE (в PostgreSQL, MySQL 8.0+) выполняет запрос фактически и показывает реальное время выполнения и количество строк, что точнее для анализа.