Sobes.tech
Middle
47

Ce face EXPLAIN și ce se schimbă la adăugarea ANALYZE? Când este inutil un index?

Companiile au fost întrebate
aic

Răspuns de la AI

sobes.tech AI

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

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

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

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

Пример:

EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;

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