strawberry-graphql/strawberry-django

N+1 queries due to queryset.count() if cache is empty

Ouverte

#788 ouverte le 30 sept. 2025

 (1 commentaire) (0 réaction) (0 personne assignée)Python (152 forks)auto 404
enhancementhelp wanted

Métriques du dépôt

Stars
 (496 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

Description

Describe the Bug

In a nested ListConnectionWithTotalCount, if the child has total_count in the query, if there is a parent node with no related child nodes, there is a queryset.count() triggered. This leads to N+1 queries like scenario if very few parent nodes have child nodes.

https://github.com/strawberry-graphql/strawberry-django/blob/269954c582dfa38dc93af95abd2a275888f50103/strawberry_django/pagination.py#L269-L298

Instead, if the queryset is optimized (is_optimized_by_prefetching is True) and there is no offset / limit mentioned then it should just return 0 assuming no nodes were found, calling the count() method only for unoptimized querysets.

Guide contributeur