strawberry-graphql/strawberry-django

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

Aperta

#788 aperta il 30 set 2025

 (1 commento) (0 reazioni) (0 assegnatari)Python (152 fork)auto 404
enhancementhelp wanted

Metriche repository

Star
 (496 stelle)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

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.

Guida contributor