İçeriğe geç

N+1 Sorgu (ARCH5050)

Anahtar go.orm.n-plus-one-query · Önem warning · Kategori orm

Döngü içinde her eleman için ayrı bir sorgu çalıştırmak (N+1), klasik ORM performans katilidir. Tek bir JOIN veya preload ile tüm ilişkili veriyi getirin.

var users []User
db.Find(&users)
for i := range users {
db.Where("user_id = ?", users[i].ID).Find(&users[i].Orders)
}
var users []User
db.Preload("Orders").Find(&users)

İlişkili veriyi döngü içinde tek tek çekmek yerine Preload veya JOIN ile tek sorguda getirin.