Есть ли способ сказать prefetch_related
только для получения ограниченного набора связанных объектов? Допустим, я собираю список пользователей, и я знаю, что хочу получить их последние комментарии. Вместо того, чтобы получать комментарии для каждого пользователя в цикле, я использую prefetch_related для предварительного извлечения их во время выборки пользователей. Я понимаю, что это позволит получить все комментарии, сделанные любым пользователем, присутствующим в результате исходного запроса, но я хочу показать только последние 5 для каждого пользователя.
Как это влияет на производительность, если список комментариев действительно огромен? Есть ли способ получить только 5 комментариев для каждого пользователя в одном (или 2) запросе? Это не обязательно должен быть тот же самый запрос, что и исходный для извлечения пользователей, но это было бы неплохо.
Я хочу повернуть этот
users = User.objects.all()
for user in users:
user.comments.all()[:10]
во что-то подобное
User.objects.all().prefetch_related('comments', limit=10)
поэтому, если пользователь имеет 100 или 10000 комментариев, они не все загружаются в память. Как бы вы сделали что-то подобное в сыром SQL?