strawberry-graphql/strawberry-django

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

Offen

#788 geöffnet am 30.09.2025

 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)Python (152 Forks)auto 404
enhancementhelp wanted

Repository-Metriken

Stars
 (496 Sterne)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

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.

Contributor Guide