{"id":74749,"date":"2023-12-05T13:20:38","date_gmt":"2023-12-05T12:20:38","guid":{"rendered":"https:\/\/kinqsta.com\/fr\/?p=74749&#038;preview=true&#038;preview_id=74749"},"modified":"2023-12-15T17:46:27","modified_gmt":"2023-12-15T16:46:27","slug":"optimisation-requete-active-record","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/","title":{"rendered":"Conseils pour l&rsquo;optimisation des requ\u00eates Active Record : Am\u00e9liorez les performances de votre application Ruby on Rails"},"content":{"rendered":"<p>En tant que d\u00e9veloppeur Ruby on Rails, il est important de comprendre l&rsquo;optimisation des requ\u00eates de base de donn\u00e9es afin d&rsquo;am\u00e9liorer les performances et l&rsquo;exp\u00e9rience utilisateur. <a href=\"https:\/\/guides.rubyonrails.org\/active_record_basics.html\" target=\"_blank\" rel=\"noopener noreferrer\">Active Record<\/a>, l&rsquo;outil ORM <a href=\"https:\/\/en.wikipedia.org\/wiki\/Object%E2%80%93relational_mapping\" target=\"_blank\" rel=\"noopener noreferrer\">(Object-Relational Mapping<\/a>) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.<\/p>\n<p>L&rsquo;optimisation des requ\u00eates est un sujet complexe, qui a fait l&rsquo;objet de nombreux ouvrages. Nous allons ici explorer quelques techniques et astuces pour optimiser vos requ\u00eates Active Record et augmenter la vitesse et la r\u00e9activit\u00e9 de votre application.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Utilisez la r\u00e9cup\u00e9ration s\u00e9lective des colonnes<\/h2>\n<p>L&rsquo;un des moyens les plus efficaces d&rsquo;optimiser les requ\u00eates Active Record consiste \u00e0 n&rsquo;extraire de la base de donn\u00e9es que les colonnes n\u00e9cessaires. En sp\u00e9cifiant les colonnes exactes dont vous avez besoin, vous minimisez les donn\u00e9es transf\u00e9r\u00e9es entre la base de donn\u00e9es et votre <a href=\"https:\/\/kinqsta.com\/fr\/blog\/applications-ruby-on-rails\/\">application Ruby on Rails<\/a>. Par exemple, si nous cherchons \u00e0 utiliser uniquement les noms de la base de donn\u00e9es :<\/p>\n<pre><code class=\"language-ruby\"># Unoptimized Practice: Retrieving all columns\nUser.all\n\n# Optimized Practice: Selecting specific columns\nUser.select(:id, :name)<\/code><\/pre>\n<h2>Employer Eager Loading<\/h2>\n<p>Eager Loading permet de r\u00e9duire le nombre de requ\u00eates \u00e0 la base de donn\u00e9es en chargeant \u00e0 l&rsquo;avance les enregistrements associ\u00e9s. En chargeant les associations \u00e0 l&rsquo;avance, vous \u00e9vitez le processus <strong><a href=\"https:\/\/www.youtube.com\/watch?v=ktZLpjCanvg&#038;t=267s\">N+1<\/a><\/strong> o\u00f9 des <a href=\"https:\/\/www.youtube.com\/watch?v=ktZLpjCanvg&#038;t=267s\" target=\"_blank\" rel=\"noopener noreferrer\"> requ\u00eates<\/a> suppl\u00e9mentaires sont ex\u00e9cut\u00e9es pour chaque enregistrement associ\u00e9. Vous trouverez ci-dessous un exemple du probl\u00e8me des requ\u00eates <strong>N+1<\/strong>, puis nous pr\u00e9sentons une technique alternative appel\u00e9e <a href=\"https:\/\/blog.appsignal.com\/2018\/04\/03\/russian-doll-caching-in-rails.html\" target=\"_blank\" rel=\"noopener noreferrer\">Russian Doll Caching<\/a>.<\/p>\n<pre><code class=\"language-ruby\"># N+1 query problem\nusers = User.all\nusers.each { |user| puts user.posts.count }  # Executes one query for users and N queries for posts (N = number of users)<\/code><\/pre>\n<p>Dans l&rsquo;exemple ci-dessus, nous r\u00e9cup\u00e9rons tous les utilisateurs, puis nous it\u00e9rons sur chaque utilisateur pour r\u00e9cup\u00e9rer le nombre d&rsquo;articles qui lui sont associ\u00e9s. Il en r\u00e9sulte l&rsquo;ex\u00e9cution de <strong>N<\/strong> requ\u00eates suppl\u00e9mentaires, ce qui entra\u00eene une d\u00e9gradation des performances.<\/p>\n<p>Pour r\u00e9soudre ce probl\u00e8me, nous pouvons utiliser le chargement anticip\u00e9 avec la m\u00e9thode <code>includes<\/code>, comme indiqu\u00e9 ci-dessous :<\/p>\n<pre><code class=\"language-ruby\"># Eager loading solution\nusers = User.includes(:posts).all\nusers.each { |user| puts user.posts.count }  # Executes two queries: one for users and one for posts (regardless of user count)<\/code><\/pre>\n<p>En utilisant <code>includes(:posts)<\/code>, nous chargeons les articles associ\u00e9s pour tous les utilisateurs en seulement deux requ\u00eates. La m\u00e9thode <code>includes<\/code> pr\u00e9charge efficacement les donn\u00e9es d&rsquo;association, ce qui \u00e9limine le besoin de requ\u00eates suppl\u00e9mentaires et am\u00e9liore consid\u00e9rablement les performances.<\/p>\n<h3>Autre technique : Russian Doll Caching<\/h3>\n<p>Outre le chargement anticip\u00e9, une autre technique permet d&rsquo;optimiser les requ\u00eates de base de donn\u00e9es : le <a href=\"https:\/\/kinqsta.com\/fr\/blog\/cache-ruby-on-rails\/#russian-doll-caching-in-ruby-on-rails\">Russian Doll Caching<\/a>. Cette technique consiste \u00e0 mettre en cache les structures de donn\u00e9es hi\u00e9rarchiques et leurs associations, ce qui permet une r\u00e9cup\u00e9ration efficace sans requ\u00eates redondantes.<\/p>\n<p>Prenons l&rsquo;exemple d&rsquo;une liste d&rsquo;articles de blog et de leurs commentaires :<\/p>\n<pre><code class=\"language-ruby\"># Without caching (N+1 query problem)\n@posts = Post.all\n@posts.each do |post|\n  @comments = post.comments\n  # Perform actions with comments\nend<\/code><\/pre>\n<p>Dans le code ci-dessus, chaque it\u00e9ration de la boucle d\u00e9clenche une requ\u00eate pour r\u00e9cup\u00e9rer les commentaires de chaque article, ce qui entra\u00eene <strong>N<\/strong> requ\u00eates suppl\u00e9mentaires.<\/p>\n<p>Pour mettre en \u0153uvre le Russian Doll Caching, nous pouvons utiliser une approche de mise en cache telle que la <a href=\"https:\/\/kinqsta.com\/fr\/blog\/cache-ruby-on-rails\/#fragment-caching-in-ruby-on-rails\">mise en cache des fragments<\/a>. En mettant en cache la vue enti\u00e8re ou partielle, y compris les enregistrements associ\u00e9s, nous pouvons \u00e9viter les requ\u00eates redondantes. Voici un exemple :<\/p>\n<pre><code class=\"language-ruby\"># With Russian Doll Caching\n&lt;% cache @posts do %&gt;\n  &lt;% @posts.each do |post| %&gt;\n    &lt;% cache post do %&gt;\n      &lt;%= post.title %&gt;\n      &lt;% post.comments.each do |comment| %&gt;\n        &lt;%= comment.content %&gt;\n      &lt;% end %&gt;\n    &lt;% end %&gt;\n  &lt;% end %&gt;\n&lt;% end %&gt;<\/code><\/pre>\n<p>Dans cette impl\u00e9mentation, nous mettons en cache l&rsquo;objet <code>@posts<\/code> et chaque article individuel \u00e0 l&rsquo;aide de l&rsquo;aide <code>cache<\/code>. Lors du rendu de la vue ou de la partie de vue, Rails v\u00e9rifie le cache avant d&rsquo;ex\u00e9cuter tout code, ce qui \u00e9limine le besoin de requ\u00eates suppl\u00e9mentaires.<\/p>\n<p>En mettant en \u0153uvre le Russian Doll Caching, vous pouvez optimiser les performances en minimisant les requ\u00eates de base de donn\u00e9es et en r\u00e9cup\u00e9rant efficacement les structures de donn\u00e9es hi\u00e9rarchiques et leurs associations.<\/p>\n<p>Eager loading est une technique puissante qui permet d&rsquo;\u00e9viter le probl\u00e8me des requ\u00eates <strong>N+1<\/strong> en pr\u00e9chargeant les associations. En outre, le Russian Doll Caching offre une autre approche pour optimiser les requ\u00eates de base de donn\u00e9es en mettant en cache les structures de donn\u00e9es hi\u00e9rarchiques et leurs associations.<\/p>\n<p>En employant ces techniques, vous pouvez am\u00e9liorer les performances et la r\u00e9activit\u00e9 de vos applications Ruby on Rails. Choisissez l&rsquo;approche qui correspond le mieux aux besoins et aux complexit\u00e9s de votre application.<\/p>\n<p><a href=\"https:\/\/kinqsta.com\/fr\/blog\/applications-ruby-on-rails\/\">Il existe des outils<\/a> qui vous aideront \u00e0 identifier les requ\u00eates <strong>N+1<\/strong> pendant que vous d\u00e9veloppez votre application. Des outils comme <a href=\"https:\/\/github.com\/flyerhzm\/bullet\" target=\"_blank\" rel=\"noopener noreferrer\">Bullet<\/a>, <a href=\"https:\/\/github.com\/MiniProfiler\/rack-mini-profiler\" target=\"_blank\" rel=\"noopener noreferrer\">Rack Mini Profiler<\/a> et <a href=\"https:\/\/github.com\/charkost\/prosopite\" target=\"_blank\" rel=\"noopener noreferrer\">Prosopite<\/a> sont des exemples qui valent la peine d&rsquo;\u00eatre essay\u00e9s sur votre projet.<\/p>\n<h2>Utiliser l&rsquo;indexation<\/h2>\n<p>Les index am\u00e9liorent les performances des requ\u00eates en permettant \u00e0 la base de donn\u00e9es de localiser les enregistrements plus rapidement. Dans Active Record, vous pouvez ajouter des index au sch\u00e9ma de votre base de donn\u00e9es, en particulier sur les colonnes fr\u00e9quemment utilis\u00e9es dans les requ\u00eates. Par exemple, vous pouvez ajouter des index \u00e0 votre sch\u00e9ma de base de donn\u00e9es :<\/p>\n<pre><code class=\"language-ruby\"># Add index to improve performance\nadd_index :users, :email<\/code><\/pre>\n<p>En outre, il existe des gemmes qui peuvent vous aider \u00e0 identifier o\u00f9 vous devriez ajouter des index, telles que les gemmes <a href=\"https:\/\/github.com\/plentz\/lol_dba\" target=\"_blank\" rel=\"noopener noreferrer\">lol_dba<\/a> ou <a href=\"https:\/\/github.com\/djezzzl\/database_consistency#missingindexchecker\" target=\"_blank\" rel=\"noopener noreferrer\">database_consistency<\/a>.<\/p>\n<h2>Optimiser les requ\u00eates de base de donn\u00e9es avec des conditions<\/h2>\n<p>Lorsque vous construisez des requ\u00eates, pensez \u00e0 utiliser des fonctionnalit\u00e9s sp\u00e9cifiques \u00e0 la base de donn\u00e9es pour les conditions afin d&rsquo;\u00e9viter de r\u00e9cup\u00e9rer des donn\u00e9es inutilement. Active Record propose plusieurs m\u00e9thodes pour optimiser les conditions de requ\u00eate, telles que <code>where<\/code>, <code>limit<\/code>, <code>offset<\/code> et <code>order<\/code>. Voici un exemple :<\/p>\n<pre><code class=\"language-ruby\"># Unoptimized query\nusers = User.all\nusers.select { |user| user.age &gt; 18 && user.age &lt; 25 }\n\n# Optimized query\nusers = User.where(age: 19..24).all<\/code><\/pre>\n<h2>Traitement par lots pour les grands ensembles de donn\u00e9es<\/h2>\n<p>Travailler avec de grands ensembles de donn\u00e9es peut avoir un impact sur les performances en raison des contraintes de m\u00e9moire. Envisagez d&rsquo;utiliser des techniques de traitement par lots pour diviser les requ\u00eates en plus petits morceaux, r\u00e9duisant ainsi l&rsquo;utilisation de la m\u00e9moire. Cette approche est particuli\u00e8rement utile pour effectuer des op\u00e9rations telles que la mise \u00e0 jour ou la suppression d&rsquo;enregistrements.<\/p>\n<p>Toutefois, il est important d&rsquo;utiliser correctement le traitement par lots pour obtenir des performances optimales. Examinons un exemple de traitement par lots m\u00e9diocre et les cons\u00e9quences n\u00e9gatives qu&rsquo;il peut avoir sur votre application :<\/p>\n<pre><code class=\"language-ruby\"># Unoptimized Practice: Naive batch processing\nusers = User.all\nusers.each do |user|\n  # Perform operations on user record\nend<\/code><\/pre>\n<p>Dans l&rsquo;extrait de code ci-dessus, nous r\u00e9cup\u00e9rons tous les enregistrements d&rsquo;utilisateurs de la base de donn\u00e9es \u00e0 l&rsquo;aide de <code>User.all<\/code>. Cela peut poser un probl\u00e8me de performance important lorsque vous traitez de grands ensembles de donn\u00e9es, car tous les enregistrements sont charg\u00e9s en m\u00e9moire en une seule fois. Par cons\u00e9quent, l&rsquo;application peut consommer des ressources m\u00e9moire excessives et ralentir.<\/p>\n<p>Pour r\u00e9soudre ce probl\u00e8me, nous allons remanier le code en utilisant une approche de traitement par lots plus optimis\u00e9e :<\/p>\n<pre><code class=\"language-ruby\"># Optimized Practice: Batch processing with `find_in_batches`\nUser.find_in_batches(batch_size: 1000) do |users_batch|\n  users_batch.each do |user|\n    # Perform operations on user record\n  end\nend<\/code><\/pre>\n<p>Dans cette mise \u00e0 jour, nous utilisons la m\u00e9thode <code>find_in_batches<\/code> fournie par Active Record. Cette m\u00e9thode r\u00e9cup\u00e8re les enregistrements par lots plus petits, sp\u00e9cifi\u00e9s par <code>batch_size<\/code>, ce qui r\u00e9duit l&#8217;empreinte m\u00e9moire. Elle traite chaque lot d&rsquo;enregistrements dans son propre contexte de m\u00e9moire, ce qui am\u00e9liore consid\u00e9rablement les performances de l&rsquo;application lorsqu&rsquo;elle traite de grands ensembles de donn\u00e9es.<\/p>\n<p>En utilisant <code>find_in_batches<\/code>, vous pouvez traiter efficacement de grands ensembles de donn\u00e9es d&rsquo;une mani\u00e8re \u00e9conome en m\u00e9moire. N&rsquo;oubliez pas d&rsquo;ajuster le site <code>batch_size<\/code> en fonction des besoins de votre application et des ressources syst\u00e8me disponibles.<\/p>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>L&rsquo;optimisation des requ\u00eates Active Record est cruciale pour am\u00e9liorer les performances de vos applications <a href=\"https:\/\/kinqsta.com\/fr\/blog\/ruby-vs-ruby-on-rails\/\">Ruby on Rails<\/a>. En suivant les conseils pr\u00e9sent\u00e9s dans cet article &#8211; y compris la r\u00e9cup\u00e9ration s\u00e9lective des colonnes, le chargement impatient, l&rsquo;indexation, l&rsquo;optimisation des conditions et le traitement par lots &#8211; vous pouvez am\u00e9liorer de mani\u00e8re significative la vitesse et l&rsquo;efficacit\u00e9 de vos requ\u00eates de base de donn\u00e9es.<\/p>\n<p>N&rsquo;oubliez pas que l&rsquo;optimisation de vos requ\u00eates permet non seulement d&rsquo;am\u00e9liorer l&rsquo;exp\u00e9rience de l&rsquo;utilisateur, mais aussi de r\u00e9duire la charge sur votre serveur de base de donn\u00e9es. Gardez ces techniques d&rsquo;optimisation \u00e0 l&rsquo;esprit et votre application Ruby on Rails fonctionnera sans probl\u00e8me, m\u00eame avec de grandes quantit\u00e9s de donn\u00e9es. Bon codage !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En tant que d\u00e9veloppeur Ruby on Rails, il est important de comprendre l&rsquo;optimisation des requ\u00eates de base de donn\u00e9es afin d&rsquo;am\u00e9liorer les performances et l&rsquo;exp\u00e9rience utilisateur. &#8230;<\/p>\n","protected":false},"author":309,"featured_media":74750,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1019],"class_list":["post-74749","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-languages-developpement-web"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Conseils pour l&#039;optimisation des requ\u00eates Active Record - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Active Record, l&#039;outil ORM (Object-Relational Mapping) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Conseils pour l&#039;optimisation des requ\u00eates Active Record : Am\u00e9liorez les performances de votre application Ruby on Rails\" \/>\n<meta property=\"og:description\" content=\"Active Record, l&#039;outil ORM (Object-Relational Mapping) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-05T12:20:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-15T16:46:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Lee Sheppard\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Active Record, l&#039;outil ORM (Object-Relational Mapping) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lee Sheppard\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/\"},\"author\":{\"name\":\"Lee Sheppard\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f\"},\"headline\":\"Conseils pour l&rsquo;optimisation des requ\u00eates Active Record : Am\u00e9liorez les performances de votre application Ruby on Rails\",\"datePublished\":\"2023-12-05T12:20:38+00:00\",\"dateModified\":\"2023-12-15T16:46:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/\"},\"wordCount\":1399,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/\",\"name\":\"Conseils pour l'optimisation des requ\u00eates Active Record - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg\",\"datePublished\":\"2023-12-05T12:20:38+00:00\",\"dateModified\":\"2023-12-15T16:46:27+00:00\",\"description\":\"Active Record, l'outil ORM (Object-Relational Mapping) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Languages de d\u00e9veloppement web\",\"item\":\"https:\/\/kinqsta.com\/fr\/sujets\/languages-developpement-web\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Conseils pour l&rsquo;optimisation des requ\u00eates Active Record : Am\u00e9liorez les performances de votre application Ruby on Rails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#website\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f\",\"name\":\"Lee Sheppard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f03cc8e644a5d49785577ddca7ea15cb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f03cc8e644a5d49785577ddca7ea15cb?s=96&d=mm&r=g\",\"caption\":\"Lee Sheppard\"},\"description\":\"Lee is an Agile certified full stack Ruby on Rails developer. With over six years in the tech industry he enjoys teaching, coaching Agile, and mentoring others. Lee also speaks at tech related events and has a background in design and illustration.\",\"url\":\"https:\/\/kinqsta.com\/fr\/blog\/author\/leesheppard\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Conseils pour l'optimisation des requ\u00eates Active Record - Kinsta\u00ae","description":"Active Record, l'outil ORM (Object-Relational Mapping) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/","og_locale":"fr_FR","og_type":"article","og_title":"Conseils pour l'optimisation des requ\u00eates Active Record : Am\u00e9liorez les performances de votre application Ruby on Rails","og_description":"Active Record, l'outil ORM (Object-Relational Mapping) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.","og_url":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-12-05T12:20:38+00:00","article_modified_time":"2023-12-15T16:46:27+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg","type":"image\/jpeg"}],"author":"Lee Sheppard","twitter_card":"summary_large_image","twitter_description":"Active Record, l'outil ORM (Object-Relational Mapping) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.","twitter_image":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Lee Sheppard","Dur\u00e9e de lecture estim\u00e9e":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/"},"author":{"name":"Lee Sheppard","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f"},"headline":"Conseils pour l&rsquo;optimisation des requ\u00eates Active Record : Am\u00e9liorez les performances de votre application Ruby on Rails","datePublished":"2023-12-05T12:20:38+00:00","dateModified":"2023-12-15T16:46:27+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/"},"wordCount":1399,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/","url":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/","name":"Conseils pour l'optimisation des requ\u00eates Active Record - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg","datePublished":"2023-12-05T12:20:38+00:00","dateModified":"2023-12-15T16:46:27+00:00","description":"Active Record, l'outil ORM (Object-Relational Mapping) de Rails, offre de puissantes fonctionnalit\u00e9s pour interroger efficacement les bases de donn\u00e9es.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#primaryimage","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/active-record-query-optimization-tips.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/fr\/blog\/optimisation-requete-active-record\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Languages de d\u00e9veloppement web","item":"https:\/\/kinqsta.com\/fr\/sujets\/languages-developpement-web\/"},{"@type":"ListItem","position":3,"name":"Conseils pour l&rsquo;optimisation des requ\u00eates Active Record : Am\u00e9liorez les performances de votre application Ruby on Rails"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/fr\/#website","url":"https:\/\/kinqsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinqsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f","name":"Lee Sheppard","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinqsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f03cc8e644a5d49785577ddca7ea15cb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f03cc8e644a5d49785577ddca7ea15cb?s=96&d=mm&r=g","caption":"Lee Sheppard"},"description":"Lee is an Agile certified full stack Ruby on Rails developer. With over six years in the tech industry he enjoys teaching, coaching Agile, and mentoring others. Lee also speaks at tech related events and has a background in design and illustration.","url":"https:\/\/kinqsta.com\/fr\/blog\/author\/leesheppard\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/74749","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/users\/309"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/comments?post=74749"}],"version-history":[{"count":4,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/74749\/revisions"}],"predecessor-version":[{"id":74768,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/posts\/74749\/revisions\/74768"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74749\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74749\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74749\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74749\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74749\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74749\/translations\/es"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74749\/translations\/it"},{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74749\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media\/74750"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/media?parent=74749"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/tags?post=74749"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/fr\/wp-json\/wp\/v2\/topic?post=74749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}