Что делает EXPLAIN в БД

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

Ответ

EXPLAIN показывает план выполнения SQL-запроса, который генерирует СУБД. Это помогает оптимизировать запросы, выявляя узкие места: отсутствие индексов, полные сканирования таблиц, сложные соединения и т.д.

Пример для PostgreSQL:

EXPLAIN SELECT * FROM users WHERE id = 42;

Вывод может выглядеть так:

Index Scan using users_pkey on users  (cost=0.15..8.17 rows=1 width=72)
  Index Cond: (id = 42)

Ключевые параметры:

  • cost — оценка стоимости операции
  • rows — ожидаемое количество строк
  • scan type (Seq Scan, Index Scan) — метод доступа к данным

В Go можно использовать с database/sql:

rows, err := db.Query("EXPLAIN ANALYZE SELECT * FROM users WHERE id = $1", 42)