Какие редфлаги есть при использовании EXPLAIN ANALYZE

«Какие редфлаги есть при использовании EXPLAIN ANALYZE» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основные редфлаги в EXPLAIN ANALYZE:

  1. Seq Scan (последовательное сканирование) на больших таблицах — указывает на отсутствие индексов.
  2. Nested Loop с большим количеством строк — может быть неэффективным для больших наборов данных.
  3. High Planning Time — долгое время планирования запроса, возможно из-за сложности или отсутствия статистики.
  4. Huge Actual Rows vs Estimated Rows — сильное расхождение между оценкой и реальностью (проблемы со статистикой).
  5. Sort Operations — сортировка больших данных в памяти (может потреблять много ресурсов).
  6. Hash Join/Batch — требует много памяти, особенно при работе с большими таблицами.

Пример с плохим планом:

EXPLAIN ANALYZE SELECT * FROM large_table WHERE non_indexed_column = 'value';

Вывод может показать Seq Scan с высоким Actual Rows, что сигнализирует о необходимости индекса.