Middle
49
¿Qué hace EXPLAIN y qué cambia al agregar ANALYZE? ¿Cuándo es inútil un índice?
Empresas donde se preguntó
aic
Respuesta de la IA
sobes.tech AI
Команда EXPLAIN в SQL показывает план выполнения запроса, то есть как СУБД собирается получить данные (например, последовательное сканирование таблицы, использование индексов и т.д.). Это помогает понять, насколько эффективно написан запрос.
Добавление ANALYZE к EXPLAIN (EXPLAIN ANALYZE) запускает сам запрос и выводит фактическое время выполнения каждого шага и количество обработанных строк. Это даёт более точную информацию о производительности.
Индекс может быть бесполезен, если:
- Запрос выбирает большую часть таблицы (например, более 30-40%), тогда СУБД может предпочесть полное сканирование.
- Колонка с индексом содержит мало уникальных значений (низкая селективность).
- Запрос использует функции или операции, которые не могут использовать индекс (например,
LIKE '%abc'). - Индекс не покрывает все необходимые поля для запроса, и требуется дополнительное обращение к таблице.
Пример:
EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;
Выведет план и реальные затраты на выполнение запроса.