2011-02-23 5 views
1

Juste mettre à jour mon code pour être prêt Rails 3, mais je rencontre un problème de performance majeur avec le code ci-dessous.Pourquoi ce code est-il plus lent?

ancien code (agréable et rapide)

@products = Product.all(
         :order => 'name', 
         :include => [:category, :brand, :merchant] 
         ).paginate(:page => params[:page]) 

Nouveau code (10 x plus lent)

@products = Product.order("name") 
        .includes([:category, :brand, :merchant]) 
        .paginate(:page => params[:page]) 

J'ai ajouté des sauts de ligne pour faciliter la lecture.

J'utilise Postgres pour ma base de données, c'est peut-être le problème?

Tous les autres conseils pour améliorer ce code seront grandement appréciés!

+0

L'avez-vous essayé en mode production? – Zepplock

+0

Non seulement le développement - ai-je fait des erreurs avec la syntaxe? – Zinc

+0

Le mode de développement n'est pas nécessairement optimisé pour la vitesse. Cela pourrait très bien être des crochets de débogage ou des fonctionnalités de commodité. S'il n'y a pas de raison évidente pour qu'il soit lent, je l'essaierais au moins en dehors du développement. – Chuck

Répondre

1

Je vérifierais la sortie SQL (des journaux ou de la console) pour voir si quelque chose a changé et/ou comment la requête pourrait être optimisée.

+0

Console a l'air bien, SQL semble bien. C'est la première chose que j'ai vérifié – Zinc

+1

Qu'est-ce qui est 10x plus lent alors? –

+0

de 15ms (ancien code) à 200ms (nouveau code) – Zinc

0

Peut-il y avoir un problème avec la pagination? Quel plugin utilisez-vous pour la pagination? Vous pourriez vouloir essayer Kaminari.

Questions connexes