Назад к вопросам
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;
Выведет план и реальные затраты на выполнение запроса.