İçeriğe geç

Döngü İçinde Sorgu (ARCH6064)

Anahtar ruby.orm.query-inside-loop · Önem warning · Kategori orm

Döngü gövdesi içinde yapılan herhangi bir DB sorgusu (ilişki N+1’inden geniştir: ad-hoc find, agregasyon, repository çağrıları dahil) her iterasyonda bir round-trip üretir.

ids.each do |id|
user = User.find(id) # her tur için ayrı sorgu
process(user)
end
users = User.where(id: ids) # tek sorguda hepsi
users.each { |user| process(user) }

Döngü içindeki sorguları, gerekli kayıtları döngü öncesi tek bir sorguyla çekecek şekilde dışarı taşıyın.