Ответ
Команда EXPLAIN
в SQL — это ключевой инструмент для анализа и оптимизации производительности запросов. Она не выполняет сам запрос, а показывает план выполнения, который выбрал оптимизатор базы данных.
Что показывает EXPLAIN
:
- Порядок соединения таблиц (Join Order).
- Методы доступа к данным: будет ли использоваться индекс (
Index Scan
) или полное сканирование таблицы (Sequential Scan
). - Предполагаемое количество строк, которые будут обработаны на каждом шаге.
- Стоимость операции (оценка ресурсов, необходимых для выполнения).
Как это помогает на практике?
Предположим, у вас есть запрос:
EXPLAIN SELECT * FROM users WHERE last_name = 'Иванов';
Если в выводе вы видите Seq Scan
, это означает, что СУБД перебирает всю таблицу users
для поиска нужных строк. Это медленно на больших таблицах. Увидев это, вы можете создать индекс:
CREATE INDEX idx_users_last_name ON users(last_name);
После этого повторный EXPLAIN
скорее всего покажет Index Scan
, что говорит о гораздо более быстром выполнении запроса.
Важное дополнение:
Команда EXPLAIN ANALYZE
(в PostgreSQL и некоторых других СУБД) не только показывает план, но и реально выполняет запрос, отображая фактическое время выполнения каждого шага. Это дает еще более точную картину производительности.