Для чего используется оператор EXPLAIN в SQL?

«Для чего используется оператор EXPLAIN в SQL?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Оператор 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 для эффективного поиска, а не сканирует всю таблицу.

Практическое применение:

  1. Выявление «узких мест»: Поиск операций с высокой оценочной стоимостью (например, Full Table Scan).
  2. Проверка использования индексов: Убедиться, что запрос использует созданные индексы.
  3. Сравнение планов: Оценить, как изменение запроса или добавление индекса повлияет на план.

EXPLAIN ANALYZE (в PostgreSQL, MySQL 8.0+) выполняет запрос фактически и показывает реальное время выполнения и количество строк, что точнее для анализа.