Вы хорошо объяснили выбор между select_related и prefetch_related. А можете привести пример, когда использование prefetch_related может привести к ухудшению производительности?

prefetch_related может замедлить страницу, если загружает огромные коллекции, которые затем почти не используются. Дополнительные запросы и сборка объектов расходуют сеть, CPU и память.

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

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

prefetch_related может замедлить страницу, если загружает огромные коллекции, которые затем почти не используются. Дополнительные запросы и сборка объектов расходуют сеть, CPU и память.

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

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

prefetch_related может замедлить страницу, если загружает огромные коллекции, которые затем почти не используются. Дополнительные запросы и сборка объектов расходуют сеть, CPU и память.

Например, для списка клиентов prefetch всех заказов за всю историю значительно тяжелее получения числа заказов или последних нескольких записей. Ещё одна ошибка — загрузить связь, затем вызвать на manager новый filter, который не использует уже загруженный набор. Ограничивайте основную страницу, выбирайте нужные поля и используйте целевой Prefetch или агрегат под сценарий. Оптимизацию сравнивают по общему времени и памяти, а не только по уменьшению количества SQL.

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

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

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

Подробнее