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