Смотрел ли план запроса

«Смотрел ли план запроса» — вопрос из категории SQL, который задают на 38% собеседований Продуктовый Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я всегда анализирую план запроса (execution plan) перед выполнением сложных SQL-запросов. Это помогает выявить потенциальные узкие места, такие как full table scans, отсутствие индексов или неоптимальные join'ы.

Пример для PostgreSQL:

EXPLAIN ANALYZE 
SELECT u.user_id, COUNT(o.order_id) 
FROM users u
JOIN orders o ON u.user_id = o.user_id
GROUP BY u.user_id;

Ключевые моменты при анализе:

  1. Проверяю тип сканирования (Seq Scan vs Index Scan)
  2. Оцениваю стоимость операций (cost=)
  3. Смотрю на порядок выполнения join'ов
  4. Проверяю наличие операций сортировки или агрегации в памяти
  5. Анализирую количество обрабатываемых строк (rows=)

Особенно важно проверять план при работе с большими таблицами или сложными запросами с подзапросами.