LINUX.ORG.RU

История изменений

Исправление Goury, (текущая версия) :

слишком много
несколько тысяч

научись в кэширование что ли

orm-ом надо пользоваться с оглядкой на эффективность

Может я тебе тайну великую открою, но любую абстракцию надо применять только тогда, когда ты понимаешь как работают все слои под ней. Абстракция это не волшебная кнопка «сделать всё как надо», а просто инструмент для упрощения некоторых процедур. В руках специалиста абстракция экономит ресурсы, в руках дилетанта это просто очередная граната для обезьяны.

Если не использовать .select_related('player').prefetch_related('player__player_display_name_set') выходит слишком много запросов к базе данных.

Используй, никто не запрещает.

Если предварительно собирать данные по каждой сущности

Зачем собирать по каждой? Собирай только по тем, по которым надо собирать.

хочу для заданного сервера отобразить игроков с числом их сессий на сервере, с сортировкой по числу сессий

В исходных данных есть сервер, задача: получить плееров.
Плееры получаются из сессий, сессии получаются из сервера.
Делай выборку сессий по серверу, результат сортируй по плеерам и готовь из этого список кортежей с плеерами и количеством сессий.
Потом по этому списку выбирай для плееров недостающие детали.
Потом клади результат в кэш и больше не лазь в базу в ближайшее время.

Да, траффика между базой данных и питоном будет больше чем при сложном SQL запросе. Но джанга нужна не для экономии на спичках, а для организации спичек в аккуратные спичечные домики.

Ну и никто не запрещает https://docs.djangoproject.com/en/1.9/topics/db/sql/
Просто это не лучшая практика.

Исходная версия Goury, :

слишком много
несколько тысяч

научись в кэширование что ли

orm-ом надо пользоваться с оглядкой на эффективность

Может я тебе тайну великую открою, но любую абстракцию надо применять только тогда, когда ты понимаешь как работают все слои под ней. Абстракция это не волшебная кнопка «сделать всё как надо», а просто инструмент для упрощения некоторых процедур. В руках специалиста абстракция экономит ресурсы, в руках дилетанта это просто очередная граната для обезьяны.

Если не использовать .select_related('player').prefetch_related('player__player_display_name_set') выходит слишком много запросов к базе данных.

Используй, никто не запрещает.

Если предварительно собирать данные по каждой сущности

Зачем собирать по каждой? Собирай только по тем, по которым надо собирать.

хочу для заданного сервера отобразить игроков с числом их сессий на сервере, с сортировкой по числу сессий

В исходных данных есть сервер, задача: получить плееров.
Плееры получаются из сессий, сессии получаются из сервера.
Делай выборку сессий по серверу, результат сортируй по плеерам и готовь из этого список кортежей с плеерами и количеством сессий.
Потом по этому списку выбирай для плееров недостающие детали.
Потом клади результат в кэш и больше не лазь в базу в ближайшее время.

Да, траффика между базой данных и питоном будет больше чем при сложном SQL запросе. Но джанга нужна не для экономии на спичках, а для организации спичек в аккуратные спичечные домики.