Dans Rails lors de l'utilisation de activeRecord, pourquoi les requêtes de jointure sont-elles considérées comme incorrectes?Optimisation des rails Question
Par exemple
Ici, je suis en train de trouver le nombre d'entreprises qui appartiennent à une certaine catégorie.
class Company ActiveRecord::Base
has_one :company_profile
end
Trouver le numéro de la société pour un category_id particulier
number_of_companies = Company.find(:all, :joins=>:company_profile, :conditions=>["(company_profiles.category_id = #{c_id}) AND is_published = true"])
Comment cela pourrait être mieux ou est-ce juste une mauvaise conception?
company_profiles = CompanyProfile.find_all_by_category_id(c_id)
companies = []
company_profiles.each{|c_profile| companies.push(c_profile.company) }
est-il pas mieux que la première demande crée une seule requête alors que je serais en cours d'exécution de plusieurs requêtes pour le second cas.
Quelqu'un pourrait-il expliquer pourquoi les jointures sont considérés comme une mauvaise pratique dans Rails
Merci à l'avance
Pourriez-vous ajouter des références:Je n'étais pas au courant qu'une telle opinion était généralement tenue - AFAIK, c'est quelque chose à éviter à moins que vous en ayez besoin mais quand vous en avez besoin (typiquement pour des raisons de performance) alors vous devriez absolument le considérer - c'est pourquoi c'est là. Cela dit, je pense que l'exemple spécifique que vous donnez pourrait être traité le plus efficacement en utilisant count() avec les conditions appropriées. (Si vous avez seulement besoin d'un numéro, c'est) –
Je semble avoir trouvé de l'aide ici http://akitaonrails.com/2008/05/25/rolling-with-rails-2-1-the-first- full-tutorial-part-2 – Sid
Il semble qu'il n'y ait pas de règle générale contre l'utilisation de jointures mais lorsque vous avez beaucoup de jointures, cela implique que vos associations ne sont pas correctement conçues. – Sid