В Django API список транзакций стал отвечать заметно медленнее после роста таблицы до 8 миллионов строк. Проведи по механизму: почему индекс может не помочь и что ты первым проверишь в плане выполнения запроса через `EXPLAIN ANALYZE`.

Сначала сравните ожидаемое и фактическое число строк, loops, сортировки и buffers. Индекс может не помочь при слабой селективности, несовместимом выражении, больших OFFSET или дорогих обращениях к таблице.

Короткий ответ

Что ответить на собеседовании

Сначала сравните ожидаемое и фактическое число строк, loops, сортировки и buffers. Индекс может не помочь при слабой селективности, несовместимом выражении, больших OFFSET или дорогих обращениях к таблице.

Подробный разбор

Ответ с пояснениями

Сначала сравните ожидаемое и фактическое число строк, loops, сортировки и buffers. Индекс может не помочь при слабой селективности, несовместимом выражении, больших OFFSET или дорогих обращениях к таблице.

Проверьте, не выполняется ли отдельный COUNT(*), нет ли N+1 и сколько строк сериализует API. В плане важно найти участок, где резко растёт объём работы, а не просто наличие Seq Scan. Составной индекс должен соответствовать фильтрам и порядку, а статистика — распределению данных. Для глубоких страниц может помочь keyset-пагинация. EXPLAIN ANALYZE выполняет запрос, поэтому тяжёлый production-запрос запускают с оговорёнными ограничениями. Само число 8 миллионов не определяет оптимальное решение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее