на одном из проектов столкнулись с тем, что prefetch_related адово тормозил, причем тормоза были где-то в недрах джанги на этапе сбора айдишников для второго запроса. Ручной обход объектов, сбор айдишников в set() и явный запрос в базу сэкономил что-то типа 100-150 миллисекунд.
Как работают select_related и prefetch_related в Django