{"id":65603,"date":"2023-12-05T09:21:10","date_gmt":"2023-12-05T12:21:10","guid":{"rendered":"https:\/\/kinqsta.com\/pt\/?p=65603&#038;preview=true&#038;preview_id=65603"},"modified":"2023-12-13T09:02:02","modified_gmt":"2023-12-13T12:02:02","slug":"otimizacao-consultas-active-record","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/","title":{"rendered":"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record: Aumente o Desempenho do Seu Aplicativo Ruby on Rails"},"content":{"rendered":"<p>Como desenvolvedor Ruby on Rails, \u00e9 importante entender\u00a0como otimizar consultas a bancos de dados para melhorar o desempenho e aprimorar a experi\u00eancia do usu\u00e1rio. O <a href=\"https:\/\/guides.rubyonrails.org\/active_record_basics.html\" target=\"_blank\" rel=\"noopener noreferrer\">Active Record<\/a>, a ferramenta ORM (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Object%E2%80%93relational_mapping\" target=\"_blank\" rel=\"noopener noreferrer\">Object-Relational Mapping<\/a>) do Rails, oferece recursos poderosos para consultar bancos de dados de forma eficiente.<\/p>\n<p>A otimiza\u00e7\u00e3o de consultas \u00e9 um assunto complexo, com muitos livros escritos sobre isso. Aqui, exploraremos algumas t\u00e9cnicas e dicas para otimizar suas consultas do Active Record e aumentar a velocidade e a capacidade de resposta do seu aplicativo.<\/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>Use a recupera\u00e7\u00e3o seletiva de colunas<\/h2>\n<p>Uma das maneiras mais eficazes de otimizar as consultas do Active Record \u00e9 recuperar apenas as colunas necess\u00e1rias do banco de dados. Ao especificar as colunas exatas de que precisa, voc\u00ea minimiza os dados transferidos entre o banco de dados e o <a href=\"https:\/\/kinqsta.com\/pt\/blog\/aplicativos-ruby-on-rails\/\">aplicativo Ruby on Rails<\/a>. Por exemplo, se voc\u00ea quiser usar apenas os nomes no banco de dados:<\/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>Use o eager loading<\/h2>\n<p>O eager loading (carregamento ansioso) ajuda a reduzir o n\u00famero de consultas ao banco de dados, adiantando o carregamento de registros associados. Com o pr\u00e9-carregamento das associa\u00e7\u00f5es, voc\u00ea evita o problema de <a href=\"https:\/\/www.youtube.com\/watch?v=ktZLpjCanvg&#038;t=267s\">consulta <strong>N+1<\/strong><\/a>, em que consultas adicionais s\u00e3o executadas para cada registro associado. Veja um exemplo do problema de consulta <strong>N+1<\/strong> abaixo, e ent\u00e3o apresentaremos uma t\u00e9cnica alternativa chamada <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>No exemplo acima, buscamos todos os usu\u00e1rios e, em seguida, iteramos sobre cada usu\u00e1rio para recuperar a contagem de suas publica\u00e7\u00f5es associadas. Isso resulta em <strong>N<\/strong> consultas adicionais sendo executadas, levando \u00e0 degrada\u00e7\u00e3o do desempenho.<\/p>\n<p>Para superar esse problema, podemos usar o eager loading com o m\u00e9todo <code>includes<\/code>, conforme mostrado abaixo:<\/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>Usando <code>includes(:posts)<\/code>, carregamos as postagens associadas de todos os usu\u00e1rios em apenas duas consultas. O m\u00e9todo <code>includes<\/code> pr\u00e9-carrega com efici\u00eancia os dados de associa\u00e7\u00e3o, eliminando a necessidade de consultas adicionais e melhorando significativamente o desempenho.<\/p>\n<h3>T\u00e9cnica alternativa: Russian Doll Caching<\/h3>\n<p>Al\u00e9m do eager loading, uma t\u00e9cnica alternativa para otimizar consultas ao banco de dados \u00e9 o <a href=\"https:\/\/kinqsta.com\/pt\/blog\/cache-rails\/#russian-doll-caching-in-ruby-on-rails\">Russian Doll Caching<\/a>. Essa t\u00e9cnica envolve o armazenamento em cache de estruturas de dados hier\u00e1rquicas e suas associa\u00e7\u00f5es, permitindo recupera\u00e7\u00e3o eficiente sem consultas redundantes.<\/p>\n<p>Vamos considerar um exemplo em que recuperamos uma lista de publica\u00e7\u00f5es de blog e seus coment\u00e1rios associados:<\/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>No c\u00f3digo acima, cada itera\u00e7\u00e3o do loop aciona uma consulta para buscar os coment\u00e1rios de cada publica\u00e7\u00e3o, o que resulta em <strong>N<\/strong> consultas adicionais.<\/p>\n<p>Para implementar o Russian Doll Caching, podemos usar uma abordagem como o <a href=\"https:\/\/kinqsta.com\/pt\/blog\/cache-rails\/#fragment-caching-in-ruby-on-rails\">cache de fragmentos<\/a>. Ao armazenar em cache a exibi\u00e7\u00e3o inteira ou parcial, incluindo os registros associados, podemos evitar consultas redundantes. Aqui est\u00e1 um exemplo:<\/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>Nessa implementa\u00e7\u00e3o, armazenamos em cache o objeto <code>@posts<\/code> e cada publica\u00e7\u00e3o individual usando o auxiliar <code>cache<\/code>. Ao renderizar a exibi\u00e7\u00e3o ou parte dela, o Rails verifica o cache antes de executar qualquer c\u00f3digo, eliminando a necessidade de consultas adicionais.<\/p>\n<p>Ao implementar o Russian Doll Caching, voc\u00ea pode otimizar o desempenho minimizando as consultas ao banco de dados e recuperando com efici\u00eancia as estruturas de dados hier\u00e1rquicas e suas associa\u00e7\u00f5es.<\/p>\n<p>O eager loading \u00e9 uma t\u00e9cnica eficiente para evitar o problema de consulta <strong>N+1<\/strong> por meio do pr\u00e9-carregamento de associa\u00e7\u00f5es. Al\u00e9m disso, o Russian Doll Caching oferece uma abordagem alternativa para otimizar as consultas ao banco de dados, armazenando em cache as estruturas de dados hier\u00e1rquicas e suas associa\u00e7\u00f5es.<\/p>\n<p>Ao empregar essas t\u00e9cnicas, voc\u00ea pode aumentar o desempenho e a capacidade de resposta dos seus aplicativos Ruby on Rails. Escolha a abordagem que melhor se adapta \u00e0s necessidades e complexidades do seu aplicativo.<\/p>\n<p><a href=\"https:\/\/kinqsta.com\/pt\/blog\/aplicativos-ruby-on-rails\/\">Existem gems<\/a> que o ajudar\u00e3o a identificar consultas <strong>N+1<\/strong> enquanto voc\u00ea estiver desenvolvendo o aplicativo. Gems como <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> e <a href=\"https:\/\/github.com\/charkost\/prosopite\" target=\"_blank\" rel=\"noopener noreferrer\">Prosopite<\/a> s\u00e3o alguns exemplos que vale a pena experimentar em seu projeto.<\/p>\n<h2>Utilize a indexa\u00e7\u00e3o<\/h2>\n<p>Os \u00edndices melhoram o desempenho das consultas, permitindo que o banco de dados localize os registros mais rapidamente. No Active Record, voc\u00ea pode adicionar \u00edndices ao schema do banco de dados, principalmente em colunas usadas com frequ\u00eancia nas consultas. Por exemplo:<\/p>\n<pre><code class=\"language-ruby\"># Add index to improve performance\nadd_index :users, :email<\/code><\/pre>\n<p>Al\u00e9m disso, h\u00e1 gems que podem ajud\u00e1-lo a identificar onde voc\u00ea deve adicionar \u00edndices, como as gems <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>Otimize consultas ao banco de dados com condi\u00e7\u00f5es<\/h2>\n<p>Ao criar consultas, considere o uso de recursos espec\u00edficos do banco de dados para condi\u00e7\u00f5es, a fim de evitar a recupera\u00e7\u00e3o desnecess\u00e1ria de dados. O Active Record oferece v\u00e1rios m\u00e9todos para otimizar as condi\u00e7\u00f5es de consulta, como <code>where<\/code>, <code>limit<\/code>, <code>offset<\/code> e <code>order<\/code>. Veja um exemplo:<\/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>Processamento em lote para grandes conjuntos de dados<\/h2>\n<p>Trabalhar com grandes conjuntos de dados pode afetar o desempenho devido a restri\u00e7\u00f5es de mem\u00f3ria. Considere o uso de t\u00e9cnicas de processamento em lote para dividir as consultas em partes menores, reduzindo o uso da mem\u00f3ria. Essa abordagem \u00e9 especialmente \u00fatil ao realizar opera\u00e7\u00f5es como atualiza\u00e7\u00e3o ou exclus\u00e3o de registros.<\/p>\n<p>No entanto, \u00e9 importante que voc\u00ea use o processamento em lote corretamente para obter o desempenho ideal. Vejamos um exemplo de processamento em lote inadequado e como ele pode afetar negativamente o seu aplicativo:<\/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>No snippet de c\u00f3digo acima, buscamos todos os registros de usu\u00e1rios do banco de dados usando <code>User.all<\/code>. Isso pode representar um problema significativo de desempenho ao lidar com grandes conjuntos de dados, pois carrega todos os registros na mem\u00f3ria de uma s\u00f3 vez. Como resultado, o aplicativo pode consumir recursos excessivos de mem\u00f3ria e ficar mais lento.<\/p>\n<p>Para resolver esse problema, vamos refatorar o c\u00f3digo usando uma abordagem de processamento em lote mais otimizada:<\/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>Nessa implementa\u00e7\u00e3o atualizada, usamos o m\u00e9todo <code>find_in_batches<\/code> fornecido pelo Active Record. Esse m\u00e9todo busca registros em lotes menores, especificados por <code>batch_size<\/code>, reduzindo o espa\u00e7o ocupado na mem\u00f3ria. Ele processa cada lote de registros em seu pr\u00f3prio contexto de mem\u00f3ria, melhorando consideravelmente o desempenho do aplicativo ao lidar com grandes conjuntos de dados.<\/p>\n<p>Com o uso de <code>find_in_batches<\/code>, voc\u00ea pode processar grandes conjuntos de dados de forma eficiente em termos de mem\u00f3ria. Lembre-se de ajustar o <code>batch_size<\/code> com base na necessidade do seu aplicativo e nos recursos dispon\u00edveis do sistema.<\/p>\n<h2>Resumo<\/h2>\n<p>Otimizar as consultas do Active Record \u00e9 fundamental para melhorar o desempenho dos seus aplicativos <a href=\"https:\/\/kinqsta.com\/pt\/blog\/ruby-vs-ruby-on-rails\/\">Ruby on Rails<\/a>. Seguindo as dicas descritas neste artigo \u2014 incluindo recupera\u00e7\u00e3o seletiva de colunas, eager loading, indexa\u00e7\u00e3o, otimiza\u00e7\u00e3o de condi\u00e7\u00f5es e processamento em lote \u2014 voc\u00ea pode aumentar significativamente a velocidade e a efici\u00eancia das suas consultas ao banco de dados.<\/p>\n<p>Lembre-se de que o ajuste fino das consultas n\u00e3o apenas melhora a experi\u00eancia do usu\u00e1rio, mas tamb\u00e9m reduz a carga no servidor de banco de dados. Mantendo essas t\u00e9cnicas de otimiza\u00e7\u00e3o em mente, seu aplicativo Ruby on Rails ser\u00e1 executado sem problemas mesmo com grandes quantidades de dados. Boa codifica\u00e7\u00e3o!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como desenvolvedor Ruby on Rails, \u00e9 importante entender\u00a0como otimizar consultas a bancos de dados para melhorar o desempenho e aprimorar a experi\u00eancia do usu\u00e1rio. O Active &#8230;<\/p>\n","protected":false},"author":309,"featured_media":65604,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1017],"class_list":["post-65603","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-linguagens-desenvolvimento-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>Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Active Record, a ferramenta ORM (Object-Relational Mapping) do Rails, oferece recursos poderosos para consultas eficientes de bancos de dados.\" \/>\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\/pt\/blog\/otimizacao-consultas-active-record\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record: Aumente o Desempenho do Seu Aplicativo Ruby on Rails\" \/>\n<meta property=\"og:description\" content=\"Active Record, a ferramenta ORM (Object-Relational Mapping) do Rails, oferece recursos poderosos para consultas eficientes de bancos de dados.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-05T12:21:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-13T12:02:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/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, a ferramenta ORM (Object-Relational Mapping) do Rails, oferece recursos poderosos para consultas eficientes de bancos de dados.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lee Sheppard\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/\"},\"author\":{\"name\":\"Lee Sheppard\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f\"},\"headline\":\"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record: Aumente o Desempenho do Seu Aplicativo Ruby on Rails\",\"datePublished\":\"2023-12-05T12:21:10+00:00\",\"dateModified\":\"2023-12-13T12:02:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/\"},\"wordCount\":1186,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/\",\"name\":\"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg\",\"datePublished\":\"2023-12-05T12:21:10+00:00\",\"dateModified\":\"2023-12-13T12:02:02+00:00\",\"description\":\"Active Record, a ferramenta ORM (Object-Relational Mapping) do Rails, oferece recursos poderosos para consultas eficientes de bancos de dados.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linguagens de Desenvolvimento Web\",\"item\":\"https:\/\/kinqsta.com\/pt\/topicos\/linguagens-desenvolvimento-web\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record: Aumente o Desempenho do Seu Aplicativo Ruby on Rails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"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\/pt\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f\",\"name\":\"Lee Sheppard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/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\/pt\/blog\/author\/leesheppard\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record - Kinsta\u00ae","description":"Active Record, a ferramenta ORM (Object-Relational Mapping) do Rails, oferece recursos poderosos para consultas eficientes de bancos de dados.","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\/pt\/blog\/otimizacao-consultas-active-record\/","og_locale":"pt_PT","og_type":"article","og_title":"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record: Aumente o Desempenho do Seu Aplicativo Ruby on Rails","og_description":"Active Record, a ferramenta ORM (Object-Relational Mapping) do Rails, oferece recursos poderosos para consultas eficientes de bancos de dados.","og_url":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2023-12-05T12:21:10+00:00","article_modified_time":"2023-12-13T12:02:02+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg","type":"image\/jpeg"}],"author":"Lee Sheppard","twitter_card":"summary_large_image","twitter_description":"Active Record, a ferramenta ORM (Object-Relational Mapping) do Rails, oferece recursos poderosos para consultas eficientes de bancos de dados.","twitter_image":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Lee Sheppard","Tempo estimado de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/"},"author":{"name":"Lee Sheppard","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f"},"headline":"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record: Aumente o Desempenho do Seu Aplicativo Ruby on Rails","datePublished":"2023-12-05T12:21:10+00:00","dateModified":"2023-12-13T12:02:02+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/"},"wordCount":1186,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/","url":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/","name":"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg","datePublished":"2023-12-05T12:21:10+00:00","dateModified":"2023-12-13T12:02:02+00:00","description":"Active Record, a ferramenta ORM (Object-Relational Mapping) do Rails, oferece recursos poderosos para consultas eficientes de bancos de dados.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#primaryimage","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/active-record-query-optimization-tips.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/pt\/blog\/otimizacao-consultas-active-record\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Linguagens de Desenvolvimento Web","item":"https:\/\/kinqsta.com\/pt\/topicos\/linguagens-desenvolvimento-web\/"},{"@type":"ListItem","position":3,"name":"Dicas de Otimiza\u00e7\u00e3o de Consultas do Active Record: Aumente o Desempenho do Seu Aplicativo Ruby on Rails"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/pt\/#website","url":"https:\/\/kinqsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","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\/pt\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f","name":"Lee Sheppard","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/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\/pt\/blog\/author\/leesheppard\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/65603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/users\/309"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/comments?post=65603"}],"version-history":[{"count":8,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/65603\/revisions"}],"predecessor-version":[{"id":65967,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/65603\/revisions\/65967"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65603\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65603\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65603\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65603\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65603\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65603\/translations\/es"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65603\/translations\/it"},{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/65603\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media\/65604"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media?parent=65603"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/tags?post=65603"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/topic?post=65603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}