go.gorm.n_plus_one
Performance
High
Detects N+1 query patterns in GORM code.
Why It Matters
Section titled “Why It Matters”N+1 queries:
- Performance degradation — Linear query growth per record
- Database overload — Excessive roundtrips saturate connections
- Latency spikes — Each query adds network overhead
Example
Section titled “Example”// ❌ Before (N+1 queries)var users []Userdb.Find(&users)
for _, user := range users { var orders []Order db.Where("user_id = ?", user.ID).Find(&orders) // Query per user! user.Orders = orders}// ✅ After (eager loading with Preload)var users []Userdb.Preload("Orders").Find(&users)// ✅ Alternative (using Joins)var users []Userdb.Joins("Orders").Find(&users)What Unfault Detects
Section titled “What Unfault Detects”- Queries inside loops accessing related data
- Missing Preload for associations
- Repeated queries with only ID varying
Auto-Fix
Section titled “Auto-Fix”Unfault can suggest Preload patterns for detected N+1 queries.