N+1 query pattern executes one query per object for related records
criticalperformanceUpdated Mar 15, 2026(via Exa)
Technologies:
How to detect:
Code sends one query to get list of objects, then one additional query per object to fetch related record. At a million rows, generates 1 million+ database queries causing PostgreSQL overload.
Recommended action:
Use select_related() for ForeignKey/OneToOne JOINs to prefetch in single query. Use prefetch_related() for ManyToMany/reverse FK (generates one additional query for all related objects). Use Django Debug Toolbar in development to detect N+1 patterns early.