Zum Inhalt springen

Orm N Plus One Query (ARCH5079)

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

Key go.performance.orm-n-plus-one · Severity warning · Category performance

Looping over a query result and fetching related data with a separate query per row (N+1) floods the database with round-trips. Eager-load the relationship with Preload.

func loadOrders(db *gorm.DB) []Order {
var orders []Order
db.Find(&orders)
for i := range orders {
db.Where("order_id = ?", orders[i].ID).Find(&orders[i].Items)
}
return orders
}
func loadOrders(db *gorm.DB) []Order {
var orders []Order
db.Preload("Items").Find(&orders)
return orders
}

Eager-load related data with Preload instead of querying it per row in a loop.