prefetch_related может замедлить страницу, если загружает огромные коллекции, которые затем почти не используются. Дополнительные запросы и сборка объектов расходуют сеть, CPU и память.
Вы хорошо объяснили выбор между select_related и prefetch_related. А можете привести пример, когда использование prefetch_related может привести к ухудшению производительности?
prefetch_related может замедлить страницу, если загружает огромные коллекции, которые затем почти не используются. Дополнительные запросы и сборка объектов расходуют сеть, CPU и память.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
prefetch_related может замедлить страницу, если загружает огромные коллекции, которые затем почти не используются. Дополнительные запросы и сборка объектов расходуют сеть, CPU и память.
Например, для списка клиентов prefetch всех заказов за всю историю значительно тяжелее получения числа заказов или последних нескольких записей. Ещё одна ошибка — загрузить связь, затем вызвать на manager новый filter, который не использует уже загруженный набор. Ограничивайте основную страницу, выбирайте нужные поля и используйте целевой Prefetch или агрегат под сценарий. Оптимизацию сравнивают по общему времени и памяти, а не только по уменьшению количества SQL.