Maison >base de données >tutoriel mysql >Comment les requêtes SQL brutes peuvent-elles améliorer les performances des applications Rails ?

Comment les requêtes SQL brutes peuvent-elles améliorer les performances des applications Rails ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-15 08:08:44486parcourir

How Can Raw SQL Queries Enhance Rails Application Performance?

Utilisez SQL natif pour optimiser l'efficacité de la récupération des données des applications Rails

Lorsque vous rencontrez des goulots d'étranglement de performances dans des environnements de déploiement tels que Heroku, envisagez d'optimiser votre application Rails à l'aide de requêtes SQL natives, ce qui peut augmenter considérablement la vitesse et réduire les délais d'attente des requêtes.

Voyons comment convertir le code Rails suivant en une requête SQL native :

<code class="language-ruby">@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)</code>

Pour exécuter cette requête en utilisant SQL natif, veuillez suivre ces étapes :

<code class="language-ruby"># 编写原生SQL查询
sql = "SELECT * FROM payment_details
JOIN projects ON payment_details.project_id = projects.id
UNION
SELECT * FROM payment_errors
JOIN projects ON payment_errors.project_id = projects.id
ORDER BY created_at DESC;"

# 直接在数据库上执行SQL查询
records_array = ActiveRecord::Base.connection.execute(sql)</code>

Results records_array sera un tableau contenant les résultats de la requête SQL. Vous pouvez parcourir ces enregistrements pour un traitement ultérieur. Cette approche contourne la couche ActiveRecord ORM, ce qui pourrait entraîner des gains de performances significatifs.

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