Список из 200 заказов делает 201 запрос к базе
В логе запросов на одну страницу списка приходится 201 обращение к базе. В коде страницы:
orders = Order.objects.all()[:200]
for order in orders:
print(order.user.email)
Почему запросов оказалось 201?
- Один запрос на список плюс по одному на каждую страницу пагинации — обычное поведение ORM
- Так и должно быть: 200 точечных запросов по первичному ключу быстрее, чем один JOIN
- Это N+1: обращение к order.user на каждой итерации порождает отдельный запрос
- Число запросов определяется размером пула соединений и от кода приложения не зависит
