strawberry-graphql/strawberry-django

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

Open

#788 opened on Sep 30, 2025

View on GitHub
 (1 comment) (0 reactions) (0 assignees)Python (152 forks)auto 404
enhancementhelp wanted

Repository metrics

Stars
 (496 stars)
PR merge metrics
 (PR metrics pending)

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.

Contributor guide