Maison >base de données >tutoriel mysql >Comment puis-je optimiser les performances de Rails en exécutant des requêtes SQL brutes ?

Comment puis-je optimiser les performances de Rails en exécutant des requêtes SQL brutes ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-15 07:17:44992parcourir

How Can I Optimize Rails Performance by Executing Raw SQL Queries?

Exécuter des requêtes SQL brutes dans Rails

Pour améliorer les performances d'une application Rails, vous pouvez envisager d'utiliser des requêtes SQL brutes, en particulier sur Heroku où les demandes sont sujettes à des erreurs de délai d'attente. Voyons comment convertir un extrait de code spécifique en SQL brut :

@payments = PaymentDetail.joins(:project).order('payment_details.created_at desc')
@payment_errors = PaymentError.joins(:project).order('payment_errors.created_at desc')

@all_payments = (@payments + @payment_errors)

Ce code combine deux associations, @payments et @payment_errors, dans @all_payments. Pour exécuter cette requête en tant que SQL brut, vous pouvez utiliser les étapes suivantes :

sql = "SELECT * FROM payment_details
        JOIN projects ON payment_details.project_id = projects.id
        ORDER BY payment_details.created_at DESC
        UNION
        SELECT * FROM payment_errors
        JOIN projects ON payment_errors.project_id = projects.id
        ORDER BY payment_errors.created_at DESC;"

records_array = ActiveRecord::Base.connection.execute(sql)

Le records_array résultant contiendra un tableau d'enregistrements obtenus à partir de votre requête SQL, vous permettant de les parcourir selon vos besoins. Cette approche est plus rapide que le code Ruby original car elle contourne la couche ORM de Rails et accède directement à la base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn