В выводе EXPLAIN вы видите оценку cost=0.00..431.00. Какой вывод аналитик может сделать безопасно?
A
cost — это точное время выполнения в миллисекундах.B
cost — это точное количество строк, которое вернет запрос.C
cost — относительная оценка планировщика, полезная для сравнения альтернативных планов, но не обещание реального времени.D
cost показывает объём памяти, который запрос выделит.Правильный ответ. Числа
cost — это оценки планировщика, а не секунды.Разбор
В Postgres-подобных СУБД cost используется планировщиком, чтобы выбрать один план из нескольких. Значения можно использовать, чтобы прикинуть «дороже/дешевле» на одной и той же базе и при схожих условиях. Но переводить cost в секунды и обещать точное время выполнения по EXPLAIN нельзя.
Проверь себя · 1/3разбор после ответа
В выводе
EXPLAIN вы видите узел Seq Scan on orders. Что это обычно означает?Ещё вопросы по теме «EXPLAIN и оптимизация»
- Вы хотите добавить новый запрос в дашборд и боитесь, что он сильно нагрузит базу, потому что таблица `events` очень большая. Что дает запуск `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 и оптимизация» →