{"id":25673,"date":"2026-03-02T10:00:00","date_gmt":"2026-03-02T09:00:00","guid":{"rendered":"https:\/\/soccorsowp.it\/blog\/?p=25673"},"modified":"2026-03-02T10:00:00","modified_gmt":"2026-03-02T09:00:00","slug":"ottimizzare-database-wordpress-velocizzare","status":"publish","type":"post","link":"https:\/\/soccorsowp.it\/blog\/ottimizzare-database-wordpress-velocizzare\/","title":{"rendered":"Come ottimizzare il database di WordPress per velocizzare il sito"},"content":{"rendered":"<h1>Come ottimizzare il database di WordPress per velocizzare il sito<\/h1>\n<p>Il database \u00e8 il motore nascosto di <a href=\"https:\/\/soccorsowp.it\/blog\/blocco-di-contenuti-opt-in-per-wordpress\/\">WordPress<\/a>: ogni pagina, articolo, commento, impostazione e dato del sito vive nel database MySQL. Con il tempo, il database accumula <strong>dati inutili<\/strong> che lo appesantiscono: revisioni infinite degli articoli, commenti spam, opzioni transienti scadute, tabelle frammentate e meta dati orfani. Un database non ottimizzato rallenta ogni singola query e di conseguenza ogni pagina del sito. In questa guida ti mostro come <strong>ottimizzare il database di WordPress<\/strong> per ottenere un sito pi\u00f9 veloce e reattivo.<\/p>\n<h2>Perch\u00e9 il database diventa lento<\/h2>\n<p>WordPress interagisce costantemente con il database. Una singola pagina pu\u00f2 generare 20-50 query al database \u2014 e su siti con WooCommerce o molti plugin questo numero pu\u00f2 superare le 200 query. Ogni query deve cercare i dati nelle tabelle, e pi\u00f9 le tabelle sono grandi e frammentate, pi\u00f9 ogni query impiega tempo.<\/p>\n<p>Le cause principali dell&#8217;appesantimento sono:<\/p>\n<ul>\n<li><strong>Revisioni degli articoli:<\/strong> WordPress salva automaticamente ogni modifica come revisione. Un articolo modificato 50 volte ha 50 revisioni nel database, ognuna con il contenuto completo dell&#8217;articolo.<\/li>\n<li><strong>Opzioni transienti:<\/strong> dati temporanei salvati dai plugin nella tabella <span style=\"font-family: monospace\">wp_options<\/span>. Molti plugin non puliscono i transienti scaduti, che si accumulano nel tempo.<\/li>\n<li><strong>Commenti spam e cestinati:<\/strong> Akismet blocca lo spam ma non lo elimina automaticamente. Migliaia di commenti spam occupano spazio e rallentano le query.<\/li>\n<li><strong>Meta dati orfani:<\/strong> quando elimini un articolo o un commento, i relativi meta dati possono rimanere nel database come righe orfane.<\/li>\n<li><strong>Tabelle di plugin disinstallati:<\/strong> molti plugin creano tabelle personalizzate nel database ma non le rimuovono quando vengono disinstallati.<\/li>\n<li><strong>Autoload di wp_options:<\/strong> la tabella wp_options ha un campo <span style=\"font-family: monospace\">autoload<\/span> che carica automaticamente determinate opzioni a ogni richiesta. Plugin che salvano grandi quantit\u00e0 di dati con autoload=yes rallentano ogni pagina.<\/li>\n<\/ul>\n<h2>Misurare le prestazioni del database<\/h2>\n<p>Prima di ottimizzare, misura lo stato attuale per avere un riferimento. Il plugin <strong>Query Monitor<\/strong> \u00e8 lo strumento migliore: mostra il numero totale di query per pagina, il tempo di esecuzione di ogni query, le query lente (superiori a 0.05 secondi) e quali plugin le generano.<\/p>\n<p>Un sito WordPress ottimizzato dovrebbe avere meno di <strong>50 query per pagina<\/strong> con un tempo totale sotto i 100ms. Se il tuo sito supera le 100 query o il tempo totale supera i 500ms, l&#8217;ottimizzazione del database \u00e8 urgente.<\/p>\n<h2>Pulizia con WP-Optimize<\/h2>\n<p><strong>WP-Optimize<\/strong> \u00e8 il plugin gratuito pi\u00f9 completo per la pulizia e l&#8217;ottimizzazione del database. Dopo l&#8217;installazione, vai su <span style=\"font-family: monospace\">WP-Optimize \u2192 Database<\/span> e troverai una lista di operazioni disponibili:<\/p>\n<ol>\n<li><strong>Pulisci tutte le revisioni degli articoli:<\/strong> elimina le revisioni vecchie. Puoi scegliere di conservare le ultime 2-3 revisioni per sicurezza.<\/li>\n<li><strong>Pulisci tutti i bozze automatiche:<\/strong> rimuove i salvataggi automatici non pi\u00f9 necessari.<\/li>\n<li><strong>Pulisci tutti i commenti cestinati:<\/strong> elimina definitivamente i commenti nel cestino.<\/li>\n<li><strong>Pulisci tutti i commenti spam:<\/strong> rimuove lo spam identificato da Akismet o altri plugin.<\/li>\n<li><strong>Rimuovi tutte le opzioni transienti:<\/strong> pulisce i dati temporanei scaduti dalla tabella wp_options.<\/li>\n<li><strong>Ottimizza le tabelle del database:<\/strong> deframmenta le tabelle per migliorare le prestazioni delle query.<\/li>\n<\/ol>\n<p>Configura la <strong>pulizia automatica<\/strong> settimanale: WP-Optimize pu\u00f2 eseguire queste operazioni in background ogni settimana senza il tuo intervento.<\/p>\n<h2>Limitare le revisioni<\/h2>\n<p>La soluzione migliore per le revisioni \u00e8 <strong>prevenirne l&#8217;accumulo<\/strong> anzich\u00e9 doverle pulire periodicamente. Aggiungi questa riga a <span style=\"font-family: monospace\">wp-config.php<\/span>:<\/p>\n<pre>define('WP_POST_REVISIONS', 3);<\/pre>\n<p>Questa impostazione limita le revisioni a un massimo di 3 per articolo. Le revisioni pi\u00f9 vecchie vengono automaticamente eliminate quando ne viene creata una nuova. Se non hai bisogno delle revisioni, puoi disabilitarle completamente con il valore <span style=\"font-family: monospace\">false<\/span>, ma conservare 2-3 revisioni \u00e8 consigliato come rete di sicurezza per recuperare contenuti persi accidentalmente.<\/p>\n<h2>Ottimizzare la tabella wp_options<\/h2>\n<p>La tabella <span style=\"font-family: monospace\">wp_options<\/span> \u00e8 una delle pi\u00f9 critiche per le prestazioni perch\u00e9 viene letta a <strong>ogni singola richiesta<\/strong>. WordPress carica in memoria tutte le righe con <span style=\"font-family: monospace\">autoload = yes<\/span> all&#8217;inizio di ogni pagina. Se questa tabella contiene migliaia di righe con autoload attivo, il caricamento iniziale rallenta sensibilmente.<\/p>\n<p>Per analizzare la situazione, esegui questa query in phpMyAdmin:<\/p>\n<pre>SELECT SUM(LENGTH(option_value)) as autoload_size\nFROM wp_options WHERE autoload = 'yes';<\/pre>\n<p>Se il risultato supera i <strong>500KB<\/strong>, hai un problema di autoload. Per identificare i responsabili:<\/p>\n<pre>SELECT option_name, LENGTH(option_value) as size\nFROM wp_options WHERE autoload = 'yes'\nORDER BY size DESC LIMIT 20;<\/pre>\n<p>Questa query mostra le 20 opzioni autoloaded pi\u00f9 grandi. Spesso troverai dati di plugin disinstallati, cache di plugin o log estesi. Puoi cambiare l&#8217;autoload a &#8220;no&#8221; per le opzioni non essenziali, ma fai attenzione: modificare opzioni di plugin attivi pu\u00f2 causare malfunzionamenti. Intervieni solo sulle opzioni di plugin che hai rimosso.<\/p>\n<h2>Rimuovere le tabelle dei plugin disinstallati<\/h2>\n<p>Quando disinstalli un plugin dalla dashboard, WordPress dovrebbe rimuovere le sue tabelle personalizzate. Ma molti plugin <strong>non eseguono la pulizia<\/strong> completa, lasciando tabelle orfane nel database che occupano spazio inutilmente.<\/p>\n<p>Per identificare le tabelle orfane, apri phpMyAdmin e confronta le tabelle presenti con quelle di WordPress standard (<span style=\"font-family: monospace\">wp_posts, wp_options, wp_users, wp_usermeta, wp_postmeta, wp_comments, wp_commentmeta, wp_terms, wp_termmeta, wp_term_taxonomy, wp_term_relationships, wp_links<\/span>). Tutte le altre tabelle sono state create da plugin o temi.<\/p>\n<p>Se riconosci tabelle di plugin che non usi pi\u00f9 (es. <span style=\"font-family: monospace\">wp_actionscheduler_*<\/span>, <span style=\"font-family: monospace\">wp_wc_*<\/span>, <span style=\"font-family: monospace\">wp_yoast_*<\/span>), puoi eliminarle con un DROP TABLE dopo aver verificato che il plugin corrispondente non sia attivo. <strong>Fai sempre un backup del database prima di eliminare tabelle.<\/strong><\/p>\n<h2>Ottimizzazione delle query con indici<\/h2>\n<p>Gli <strong>indici<\/strong> del database sono come l&#8217;indice di un libro: permettono a MySQL di trovare i dati senza scorrere l&#8217;intera tabella. WordPress crea gli indici necessari durante l&#8217;installazione, ma plugin che creano tabelle personalizzate non sempre aggiungono indici adeguati.<\/p>\n<p>Con Query Monitor attivo, identifica le query lente (evidenziate in rosso). Se una query lenta interroga una tabella personalizzata di un plugin, verifica in phpMyAdmin che la tabella abbia indici sulle colonne usate nelle clausole WHERE e JOIN. L&#8217;aggiunta di un indice su una colonna frequentemente cercata pu\u00f2 ridurre il tempo della query da secondi a millisecondi.<\/p>\n<h2>Configurare Redis Object Cache<\/h2>\n<p>Per siti con traffico significativo, l&#8217;ottimizzazione del database pi\u00f9 efficace \u00e8 aggiungere una <strong>cache degli oggetti<\/strong> con Redis. Redis \u00e8 un database in-memory che memorizza i risultati delle query WordPress nella RAM, eliminando la necessit\u00e0 di interrogare MySQL ripetutamente per gli stessi dati.<\/p>\n<p>Se il tuo hosting supporta Redis (verificalo nel pannello o con il <a href=\"https:\/\/soccorsowp.it\/blog\/woodmart-tema-woocommerce-multipurpose\/\">supporto tecnico<\/a>), l&#8217;attivazione \u00e8 semplice:<\/p>\n<ol>\n<li>Installa il plugin <strong>Redis Object Cache<\/strong> di Till Kr\u00fcss.<\/li>\n<li>Vai su <span style=\"font-family: monospace\">Impostazioni \u2192 Redis<\/span> e clicca &#8220;Enable Object Cache&#8221;.<\/li>\n<li>Verifica che lo stato sia &#8220;Connected&#8221;.<\/li>\n<\/ol>\n<p>L&#8217;impatto \u00e8 immediato: le query ripetute vengono servite dalla RAM in microsecondi anzich\u00e9 millisecondi. Su siti WooCommerce con cataloghi ampi, Redis pu\u00f2 ridurre il tempo di generazione delle pagine del 50-70%.<\/p>\n<h2>Manutenzione periodica<\/h2>\n<p>L&#8217;ottimizzazione del database non \u00e8 un&#8217;operazione una tantum. Configura una routine di manutenzione:<\/p>\n<ul>\n<li><strong>Settimanale:<\/strong> pulizia automatica con WP-Optimize (revisioni, spam, transienti).<\/li>\n<li><strong>Mensile:<\/strong> ottimizzazione delle tabelle e controllo della dimensione del database.<\/li>\n<li><strong>Trimestrale:<\/strong> analisi delle query con Query Monitor per identificare nuovi colli di bottiglia introdotti da aggiornamenti o nuovi plugin.<\/li>\n<\/ul>\n<h2>Il database \u00e8 il tuo collo di bottiglia?<\/h2>\n<p>Un database ottimizzato \u00e8 la base per un sito WordPress veloce. Se il tuo sito \u00e8 lento nonostante un buon hosting e la cache attiva, il database potrebbe essere il collo di bottiglia nascosto. Il team di <strong><a href=\"https:\/\/soccorsowp.it\/blog\/i-migliori-plugin-woocommerce-per-dominare-il-black-friday\/\">SoccorsoWP<\/a><\/strong> pu\u00f2 analizzare il database del tuo sito, eseguire una pulizia approfondita, configurare Redis e implementare una routine di manutenzione automatica. <a href=\"https:\/\/soccorsowp.it\/ticket\/\">Apri un ticket<\/a> e fai respirare il tuo database.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come ottimizzare il database di WordPress per velocizzare il sito Il database \u00e8 il motore nascosto di WordPress: ogni pagina, articolo, commento, impostazione e dato&#8230;<\/p>\n","protected":false},"author":1,"featured_media":25674,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Ottimizzare database WordPress: guida completa per velocizzare il sito","_seopress_titles_desc":"Come ottimizzare il database di WordPress: pulizia revisioni, transienti, wp_options, tabelle orfane, Redis Object Cache e manutenzione periodica.","_seopress_robots_index":"","footnotes":""},"categories":[1699],"tags":[],"class_list":{"0":"post-25673","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-performance-e-ottimizzazione"},"_links":{"self":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/comments?post=25673"}],"version-history":[{"count":1,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25673\/revisions"}],"predecessor-version":[{"id":26149,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25673\/revisions\/26149"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media\/25674"}],"wp:attachment":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media?parent=25673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/categories?post=25673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/tags?post=25673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}