#django #postgresql #django-orm
#джанго #postgresql #джанго-орм
Вопрос:
У меня есть следующие отношения:
Я пытаюсь выбрать все задачи со всеми экземплярами и их транспортным средством. Однако это очень медленный запрос.
Насколько я понимаю, я должен использовать prefetch_related, потому что это одномерные отношения.
В моей модели экземпляра есть обратный внешний ключ для задачи:
task = models.ForeignKey(TaskModel, on_delete=models.CASCADE, related_name="instances")
Я попытался выполнить подобный запрос в DjangoORM:
TaskModel.objects.filter(department_id=department_id).prefetch_related("instances", "instances__vehicle")
Но это очень медленно. Есть ли какой-либо способ оптимизировать это или из-за того, что отношения по своей сути ограничивают этот шаблон запроса?
Работает в Django 3.x
Комментарии:
1. Сколько результатов вы получаете?
2. существует примерно ~30 тыс. задач и ~60 тыс. экземпляров
3. Извлечение такого объема данных всегда будет медленным. Что вы делаете с данными после их получения?
4. Не могли бы вы показать нам результат, который можно ОБЪЯСНИТЬ(ПРОАНАЛИЗИРОВАТЬ, ПОДРОБНО, БУФЕРЫ) для этого запроса и самого SQL? А какие показатели у вас есть? Не могли бы вы показать DDL?
5. @FrankHeikens извините, что означает DDL?