Skip to content

go.gorm.n_plus_one

Performance High

Detects N+1 query patterns in GORM code.

N+1 queries:

  • Performance degradation — Linear query growth per record
  • Database overload — Excessive roundtrips saturate connections
  • Latency spikes — Each query adds network overhead
// ❌ Before (N+1 queries)
var users []User
db.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 []User
db.Preload("Orders").Find(&users)
// ✅ Alternative (using Joins)
var users []User
db.Joins("Orders").Find(&users)
  • Queries inside loops accessing related data
  • Missing Preload for associations
  • Repeated queries with only ID varying

Unfault can suggest Preload patterns for detected N+1 queries.