Je suis d'accord avec tout le monde. Vous devez profiler. Il ne sert à rien de faire quoi que ce soit sur votre code tant que vous ne savez pas ce qui cause spécifiquement la lenteur. Essayer de régler un problème sans en comprendre la cause, c'est comme se sentir malade et décider de subir plusieurs interventions chirurgicales jusqu'à ce que vous vous sentiez mieux. Diagnostiquez d'abord votre problème. Cela peut être quelque chose de petit comme un paramètre réseau ou une mauvaise ligne dans votre code.
Quelques conseils pour le profilage :
Comment profiler votre application Rails
Applications Rails de test de performances
À la forge - Profilage des applications Rails
Une fois que vous avez trouvé le goulot d'étranglement, vous pouvez déterminer quoi faire.
Je recommande ces vidéos :Railslab Scaling Rails
Révisé maintenant en fonction des résultats du prof :
D'ACCORD. Maintenant que vous pouvez voir que votre problème est que vous effectuez une sorte de calcul à l'aide d'une requête basée sur une boucle dans les résultats d'une autre requête d'enregistrement actif, je vous conseille d'envisager de créer une instruction SQL personnalisée combinant vos critères de sélection initiaux et le calcul de la boucle pour obtenir ce dont vous avez besoin. Vous pouvez certainement accélérer cela en optimisant le SQL.