{"id":75170,"date":"2023-12-05T14:00:12","date_gmt":"2023-12-05T13:00:12","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=75170&#038;preview=true&#038;preview_id=75170"},"modified":"2023-12-06T09:42:23","modified_gmt":"2023-12-06T08:42:23","slug":"ottimizzazione-query-active-record","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/","title":{"rendered":"Consigli per ottimizzare le query con Active Record: come migliorare le prestazioni delle app Ruby on Rails"},"content":{"rendered":"<p>Quando si lavora con Ruby on Rails, \u00e8 importante capire come ottimizzare le query al database per migliorare le prestazioni e la user experience. <a href=\"https:\/\/guides.rubyonrails.org\/active_record_basics.html\" target=\"_blank\" rel=\"noopener noreferrer\">Active Record<\/a>, lo strumento ORM (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Object%E2%80%93relational_mapping\" target=\"_blank\" rel=\"noopener noreferrer\">Object-Relational Mapping<\/a>) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.<\/p>\n<p>L&#8217;ottimizzazione delle query \u00e8 un argomento complesso, sul quale sono stati scritti molti libri. Qui esploreremo alcune tecniche e alcuni consigli per ottimizzare le query di Active Record e aumentare la velocit\u00e0 e la reattivit\u00e0 della vostra applicazione.<\/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>Usare il recupero selettivo delle colonne<\/h2>\n<p>Uno dei modi pi\u00f9 efficaci per ottimizzare le query di Active Record \u00e8 recuperare solo le colonne necessarie dal database. Specificando le colonne esatte di cui abbiamo bisogno, minimizziamo i dati trasferiti tra il database e la nostra <a href=\"https:\/\/kinsta.com\/it\/blog\/applicazioni-ruby-on-rails\/\">applicazione Ruby on Rails<\/a>. Ad esempio, se volessimo utilizzare solo i nomi del database:<\/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>Usare l&#8217;eager loading<\/h2>\n<p>L&#8217;eager loading aiuta a ridurre il numero di query al database caricando in anticipo i record associati. Caricando in anticipo le associazioni, si evita il problema delle <a href=\"https:\/\/www.youtube.com\/watch?v=ktZLpjCanvg&#038;t=267s\">query <strong>N+1<\/strong><\/a> per ogni record associato. Di seguito viene riportato un esempio del problema delle query <strong>N+1<\/strong> e viene presentata una tecnica alternativa chiamata <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>Nell&#8217;esempio precedente, recuperiamo tutti gli utenti e poi iteriamo su ogni utente per recuperare il numero di post associati. Questo comporta l&#8217;esecuzione di <strong>N<\/strong> query aggiuntive, con un conseguente calo delle prestazioni.<\/p>\n<p>Per ovviare a questo problema, possiamo impiegare il metodo <code>includes<\/code> per l&#8217;eager loading, come mostrato di seguito:<\/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>Utilizzando il metodo <code>includes(:posts)<\/code>, carichiamo i post associati per tutti gli utenti in sole due query. Il metodo <code>includes<\/code> precarica in modo efficiente i dati di associazione, eliminando la necessit\u00e0 di ulteriori query e migliorando notevolmente le prestazioni.<\/p>\n<h3>Tecnica alternativa: Russian doll caching<\/h3>\n<p>Oltre all&#8217;eager loading, una tecnica alternativa per ottimizzare le query del database \u00e8 il <a href=\"https:\/\/kinsta.com\/it\/blog\/rails-caching\/#russian-doll-caching-in-ruby-on-rails\">Russian Doll Caching<\/a>. Questa tecnica prevede la memorizzazione nella cache delle strutture dati gerarchiche e delle loro associazioni, consentendo un recupero efficiente senza query ridondanti.<\/p>\n<p>Consideriamo un esempio in cui recuperiamo un elenco di post di un blog e i relativi commenti:<\/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>Nel codice precedente, ogni iterazione del ciclo attiva una query per recuperare i commenti di ogni post, il che porta a <strong>N<\/strong> query aggiuntive.<\/p>\n<p>Per implementare il Russian Doll Caching, possiamo utilizzare un approccio di caching come il <a href=\"https:\/\/kinsta.com\/it\/blog\/rails-caching\/#fragment-caching-in-ruby-on-rails\">fragment caching<\/a>. Mettendo in cache l&#8217;intera vista o parte di essa, compresi i record associati, possiamo evitare query ridondanti. Ecco un esempio:<\/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>In questa implementazione, mettiamo in cache l&#8217;oggetto <code>@posts<\/code> e ogni singolo post usando l&#8217;helper <code>cache<\/code>. Al momento del rendering della vista o del parziale, Rails controlla la cache prima di eseguire qualsiasi codice, eliminando cos\u00ec la necessit\u00e0 di ulteriori query.<\/p>\n<p>Implementando il Russian Doll Caching, possiamo ottimizzare le prestazioni riducendo al minimo le query al database e recuperando in modo efficiente le strutture dati gerarchiche e le loro associazioni.<\/p>\n<p>L&#8217;Eager Loading \u00e8 una tecnica potente per evitare il problema delle <strong>N+1<\/strong> query precaricando le associazioni. Inoltre, il Russian Doll Caching offre un approccio alternativo per ottimizzare le query del database mettendo in cache le strutture dati gerarchiche e le loro associazioni.<\/p>\n<p>Utilizzando queste tecniche, possiamo aumentare le prestazioni e la reattivit\u00e0 delle applicazioni Ruby on Rails. Scegliete pure l&#8217;approccio che meglio si adatta alle esigenze e alle complessit\u00e0 della vostra applicazione.<\/p>\n<p>Esistono <a href=\"https:\/\/kinsta.com\/it\/blog\/applicazioni-ruby-on-rails\/\">gemme<\/a> che vi aiuteranno a identificare le query <strong>N+1<\/strong> durante lo sviluppo della vostra applicazione. Gemme come <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> sono alcuni esempi che vale la pena provare nel vostro progetto.<\/p>\n<h2>Utilizzare l&#8217;indicizzazione<\/h2>\n<p>Gli indici migliorano le prestazioni delle query consentendo al database di individuare i record pi\u00f9 rapidamente. In Active Record, possiamo aggiungere indici allo schema del database, in particolare sulle colonne utilizzate frequentemente nelle query. Ad esempio:<\/p>\n<pre><code class=\"language-ruby\"># Add index to improve performance\nadd_index :users, :email<\/code><\/pre>\n<p>Inoltre, ci sono gemme che possono aiutarci a identificare i punti in cui aggiungere gli indici, come le gemme <a href=\"https:\/\/github.com\/plentz\/lol_dba\" target=\"_blank\" rel=\"noopener noreferrer\">lol_dba<\/a> o <a href=\"https:\/\/github.com\/djezzzl\/database_consistency#missingindexchecker\" target=\"_blank\" rel=\"noopener noreferrer\">database_consistency<\/a>.<\/p>\n<h2>Ottimizzare le query del database con le condizioni<\/h2>\n<p>Quando costruite le query, prendete in considerazione l&#8217;utilizzo di funzioni specifiche del database come condizioni per evitare di recuperare dati non necessari. Active Record offre diversi metodi per ottimizzare le condizioni delle query, come <code>where<\/code>, <code>limit<\/code>, <code>offset<\/code> e <code>order<\/code>. Ecco un esempio:<\/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>Elaborare grandi insiemi di dati in batch<\/h2>\n<p>Lavorare con grandi insiemi di dati pu\u00f2 avere un impatto sulle prestazioni a causa dei limiti di memoria. Possiamo quindi prendere in considerazione l&#8217;utilizzo di tecniche di elaborazione batch per suddividere le query in parti pi\u00f9 piccole, riducendo l&#8217;utilizzo della memoria. Questo approccio \u00e8 particolarmente utile quando si eseguono operazioni come l&#8217;aggiornamento o la cancellazione di record.<\/p>\n<p>Tuttavia, \u00e8 importante utilizzare correttamente l&#8217;elaborazione batch per ottenere prestazioni ottimali. Vediamo un esempio di cattiva elaborazione batch e come pu\u00f2 influire negativamente su un&#8217;applicazione:<\/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>Nello snippet di codice qui sopra, recuperiamo tutti i record degli utenti dal database utilizzando <code>User.all<\/code>. Questo pu\u00f2 rappresentare un problema significativo per le prestazioni quando si ha a che fare con grandi insiemi di dati, perch\u00e9 carica tutti i record in memoria in una sola volta. Di conseguenza, l&#8217;applicazione potrebbe consumare troppe risorse di memoria e rallentare.<\/p>\n<p>Per risolvere questo problema, rifattorizziamo il codice utilizzando un approccio all&#8217;elaborazione batch pi\u00f9 ottimizzato:<\/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>In questa implementazione aggiornata, utilizziamo il metodo <code>find_in_batches<\/code> fornito da Active Record. Questo metodo recupera i record in lotti pi\u00f9 piccoli, specificati da <code>batch_size<\/code>, riducendo l&#8217;ingombro in memoria. Ogni lotto di record viene elaborato all&#8217;interno del proprio contesto di memoria, migliorando notevolmente le prestazioni dell&#8217;applicazione quando si tratta di grandi insiemi di dati.<\/p>\n<p>Utilizzando <code>find_in_batches<\/code>, possiamo elaborare efficacemente grandi insiemi di dati in modo efficiente dal punto di vista della memoria. Ricordate di regolare <code>batch_size<\/code> in base alle esigenze dell&#8217;applicazione e alle risorse di sistema disponibili.<\/p>\n<h2>Riepilogo<\/h2>\n<p>L&#8217;ottimizzazione delle query di Active Record \u00e8 fondamentale per migliorare le prestazioni delle applicazioni <a href=\"https:\/\/kinsta.com\/it\/blog\/ruby-vs-ruby-on-rails\/\">Ruby on Rails<\/a>. Seguendo i suggerimenti illustrati in questo articolo &#8211; tra cui il recupero selettivo delle colonne, l&#8217;eager loading, l&#8217;indicizzazione, l&#8217;ottimizzazione delle condizioni e l&#8217;elaborazione in batch &#8211; si possono migliorare notevolmente la velocit\u00e0 e l&#8217;efficienza delle query al database.<\/p>\n<p>Ricordate che la messa a punto delle query non solo migliora l&#8217;esperienza dell&#8217;utente, ma riduce anche il carico sul server del database. Tenete a mente queste tecniche di ottimizzazione e la vostra applicazione Ruby on Rails funzioner\u00e0 senza problemi, anche con grandi quantit\u00e0 di dati. Buona programmazione!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando si lavora con Ruby on Rails, \u00e8 importante capire come ottimizzare le query al database per migliorare le prestazioni e la user experience. Active Record, &#8230;<\/p>\n","protected":false},"author":309,"featured_media":75171,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25945],"class_list":["post-75170","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-linguaggi-sviluppo-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>Consigli per l&#039;ottimizzazione delle query con Active Record - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Active Record, lo strumento ORM (Object-Relational Mapping) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Consigli per ottimizzare le query con Active Record: come migliorare le prestazioni delle app Ruby on Rails\" \/>\n<meta property=\"og:description\" content=\"Active Record, lo strumento ORM (Object-Relational Mapping) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-05T13:00:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-06T08:42:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/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, lo strumento ORM (Object-Relational Mapping) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lee Sheppard\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/\"},\"author\":{\"name\":\"Lee Sheppard\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f\"},\"headline\":\"Consigli per ottimizzare le query con Active Record: come migliorare le prestazioni delle app Ruby on Rails\",\"datePublished\":\"2023-12-05T13:00:12+00:00\",\"dateModified\":\"2023-12-06T08:42:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/\"},\"wordCount\":1073,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips-15.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/\",\"name\":\"Consigli per l'ottimizzazione delle query con Active Record - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips-15.jpg\",\"datePublished\":\"2023-12-05T13:00:12+00:00\",\"dateModified\":\"2023-12-06T08:42:23+00:00\",\"description\":\"Active Record, lo strumento ORM (Object-Relational Mapping) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips-15.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips-15.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linguaggi di Sviluppo Web\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/linguaggi-sviluppo-web\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Consigli per ottimizzare le query con Active Record: come migliorare le prestazioni delle app Ruby on Rails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"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:\/\/kinsta.com\/it\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f\",\"name\":\"Lee Sheppard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/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:\/\/kinsta.com\/it\/blog\/author\/leesheppard\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Consigli per l'ottimizzazione delle query con Active Record - Kinsta\u00ae","description":"Active Record, lo strumento ORM (Object-Relational Mapping) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.","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:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/","og_locale":"it_IT","og_type":"article","og_title":"Consigli per ottimizzare le query con Active Record: come migliorare le prestazioni delle app Ruby on Rails","og_description":"Active Record, lo strumento ORM (Object-Relational Mapping) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.","og_url":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-12-05T13:00:12+00:00","article_modified_time":"2023-12-06T08:42:23+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips.jpg","type":"image\/jpeg"}],"author":"Lee Sheppard","twitter_card":"summary_large_image","twitter_description":"Active Record, lo strumento ORM (Object-Relational Mapping) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Lee Sheppard","Tempo di lettura stimato":"6 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/"},"author":{"name":"Lee Sheppard","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f"},"headline":"Consigli per ottimizzare le query con Active Record: come migliorare le prestazioni delle app Ruby on Rails","datePublished":"2023-12-05T13:00:12+00:00","dateModified":"2023-12-06T08:42:23+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/"},"wordCount":1073,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips-15.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/","url":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/","name":"Consigli per l'ottimizzazione delle query con Active Record - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips-15.jpg","datePublished":"2023-12-05T13:00:12+00:00","dateModified":"2023-12-06T08:42:23+00:00","description":"Active Record, lo strumento ORM (Object-Relational Mapping) di Rails, offre potenti funzioni per interrogare i database in modo efficiente.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips-15.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/active-record-query-optimization-tips-15.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/ottimizzazione-query-active-record\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Linguaggi di Sviluppo Web","item":"https:\/\/kinsta.com\/it\/argomenti\/linguaggi-sviluppo-web\/"},{"@type":"ListItem","position":3,"name":"Consigli per ottimizzare le query con Active Record: come migliorare le prestazioni delle app Ruby on Rails"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","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:\/\/kinsta.com\/it\/#\/schema\/person\/7072c1374cdb4e46b948fa7dfd8d857f","name":"Lee Sheppard","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/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:\/\/kinsta.com\/it\/blog\/author\/leesheppard\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/309"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=75170"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75170\/revisions"}],"predecessor-version":[{"id":75212,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/75170\/revisions\/75212"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75170\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75170\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75170\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75170\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75170\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75170\/translations\/es"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75170\/translations\/it"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/75170\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/75171"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=75170"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=75170"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=75170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}