Sobes.tech
Назад к вопросам
Middle
2

Что делает EXPLAIN и что меняется при добавлении ANALYZE? Когда индекс бесполезен?

Компании, где спрашивали
aic

Ответ от нейросети

sobes.tech AI

Команда EXPLAIN в SQL показывает план выполнения запроса, то есть как СУБД собирается получить данные (например, последовательное сканирование таблицы, использование индексов и т.д.). Это помогает понять, насколько эффективно написан запрос.

Добавление ANALYZE к EXPLAIN (EXPLAIN ANALYZE) запускает сам запрос и выводит фактическое время выполнения каждого шага и количество обработанных строк. Это даёт более точную информацию о производительности.

Индекс может быть бесполезен, если:

  • Запрос выбирает большую часть таблицы (например, более 30-40%), тогда СУБД может предпочесть полное сканирование.
  • Колонка с индексом содержит мало уникальных значений (низкая селективность).
  • Запрос использует функции или операции, которые не могут использовать индекс (например, LIKE '%abc').
  • Индекс не покрывает все необходимые поля для запроса, и требуется дополнительное обращение к таблице.

Пример:

EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;

Выведет план и реальные затраты на выполнение запроса.