Наиболее прямой следующий шаг — проверить фильтры, сортировку, селективность и подобрать индекс по плану. Сам по себе Seq Scan не доказывает, что нужен любой индекс.
Практическое задание
Наиболее прямой следующий шаг — проверить фильтры, сортировку, селективность и подобрать индекс по плану. Сам по себе Seq Scan не доказывает, что нужен любой индекс.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Практическое задание Django API медленно отдаёт список, а EXPLAIN ANALYZE показывает последовательное чтение большой таблицы. Какой следующий шаг будет полезнее?
- Проверить N+1 и число SQL-запросов ORM параллельно с планом.
- Добавить индекс на поле сортировки без проверки фильтра.
- Создать индексы на всех столбцах таблицы.
- Увеличить ресурсы PostgreSQL и наблюдать.
- Кэшировать весь список навсегда в Redis.
- Проверить фильтры, сортировку, селективность и подобрать индекс по плану.
Ответ
Наиболее прямой следующий шаг — проверить фильтры, сортировку, селективность и подобрать индекс по плану. Сам по себе Seq Scan не доказывает, что нужен любой индекс.
Сравните ожидаемое и фактическое число строк, актуальность статистики и объём читаемых данных. Для выборки значительной части таблицы последовательное чтение может быть разумным; проблему тогда ищут в контракте списка и объёме результата. Проверить N+1 параллельно тоже полезно, но это другой уровень, не объясняющий автоматически данный план. Индексы на всех столбцах и вечный кеш добавляют риски. Выбранное изменение проверяют на характерных параметрах и общей стоимости записи.