Встречается на собеседованиях • сегодня

На что обращаешь внимание в выводе EXPLAIN ANALYZE в БД

При анализе EXPLAIN ANALYZE в PostgreSQL (аналоги для других СУБД) смотрю на:

  1. Тип доступа (Seq Scan, Index Scan, Bitmap Heap Scan) - индексные сканы обычно лучше полных.
  2. Стоимость (cost) - разницу между оценкой и реальным временем (планировщик может ошибаться).
  3. Rows vs Actual Rows - если расхождение >10%, возможно, нужен ANALYZE.
  4. Фильтрация (Filter) - много отброшенных строк указывает на неоптимальность.
  5. Join-алгоритмы (Nested Loop, Hash Join, Merge Join) - выбор зависит от размера таблиц.
  6. Параллельное выполнение - Workers Planned > 0.
  7. Временные файлы (Temp Files) - их использование сигнализирует о нехватке памяти.

Пример проблемного плана:

sql
->  Seq Scan on orders  (cost=0.00..1834.00 rows=1000 width=8)
                       (actual time=0.012..12.345 rows=1000000 loops=1)
        Filter: (amount > 1000)
        Rows Removed by Filter: 5000000  -- 83% отфильтровано!

Здесь явно нужен индекс по amount.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы