Вы хотите добавить новый запрос в дашборд и боитесь, что он сильно нагрузит базу, потому что таблица events очень большая. Что дает запуск EXPLAIN для этого запроса?
AОн выполнит запрос и вернет точное время выполнения в миллисекундах.
BОн покажет предполагаемый план выполнения (например,
Seq Scan или Index Scan) без выполнения запроса.CОн автоматически создаст нужные индексы для ускорения.
DОн заблокирует таблицу, чтобы результат был стабильным.
Правильный ответ.
EXPLAIN показывает план выполнения и помогает оценить риск тяжёлого запроса без его запуска.Разбор
В Postgres-подобных СУБД EXPLAIN отображает выбранные шаги плана (например, Seq Scan, Index Scan, Sort, операции для JOIN) и их оценки. Это полезно, чтобы увидеть потенциальные узкие места до запуска запроса в проде. В отличие от EXPLAIN ANALYZE, обычный EXPLAIN не выполняет запрос.
Проверь себя · 1/3разбор после ответа
Есть индекс по
orders.created_at, но EXPLAIN для фильтра WHERE date(created_at) = current_date показывает Seq Scan. Почему это часто происходит?Ещё вопросы по теме «EXPLAIN и оптимизация»
- В выводе `EXPLAIN` вы видите узел `Seq Scan on orders`. Что это обычно означает?
- В плане `EXPLAIN` для запроса по пользователю вы видите `Index Scan using orders_user_id_idx on orders`. Какой вывод наиболее корректен?
- На большой таблице `events` запрос `SELECT * FROM events ORDER BY created_at DESC LIMIT 100` неожиданно работает быстро. Какое объяснение наиболее вероятно при наличии индекса по `created_at`?
- Есть индекс по `orders.created_at`, но `EXPLAIN` для фильтра `WHERE date(created_at) = current_date` показывает `Seq Scan`. Почему это часто происходит?
- В выводе `EXPLAIN` вы видите оценку `cost=0.00..431.00`. Какой вывод аналитик может сделать безопасно?
- Все вопросы по «EXPLAIN и оптимизация» →