Maison >base de données >tutoriel mysql >Comment Raw SQL peut-il optimiser les requêtes Slow Rails ?

Comment Raw SQL peut-il optimiser les requêtes Slow Rails ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-15 09:38:43355parcourir

How Can Raw SQL Optimize Slow Rails Queries?

Améliorer les performances de Rails : tirer parti du SQL brut pour l'optimisation des requêtes

Les requêtes lentes peuvent avoir un impact significatif sur les performances de votre application Rails. Une approche pour résoudre ce problème consiste à utiliser du SQL brut pour optimiser les interactions de votre base de données.

Migration d'ActiveRecord vers Raw SQL

L'exemple de code utilise ActiveRecord pour joindre et trier les données de deux tables. Nous pouvons améliorer cela en employant directement du SQL brut via ActiveRecord::Base.connection.execute. Voici le SQL optimisé :

<code class="language-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 payment_details.created_at DESC, payment_errors.created_at DESC;"
records_array = ActiveRecord::Base.connection.execute(sql)</code>

Les résultats de la requête sont stockés dans records_array, ce qui permet une itération et un accès faciles aux enregistrements individuels.

Performances améliorées, en particulier sur Heroku

L'utilisation de SQL brut entraîne souvent des améliorations substantielles des performances, en particulier sur des plates-formes comme Heroku, où les délais d'attente des requêtes sont une préoccupation courante. En effet, le SQL brut contourne la couche ActiveRecord ORM, réduisant ainsi la surcharge de traitement.

Meilleures pratiques pour l'utilisation du SQL brut

  • Utilisez judicieusement le SQL brut. Une dépendance excessive peut compromettre la maintenabilité du code.
  • Paramétrez toujours vos requêtes pour atténuer les vulnérabilités d'injection SQL.
  • Des tests rigoureux sont essentiels pour garantir que les requêtes SQL brutes produisent les bons résultats.

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