QUERY SQL PER PULIRE E OTTIMIZZARE DATABASE WORDPRESS
(Aggiornato il 06/02/2022)
In questo articolo vedremo un elenco di Query SQL per pulire e ottimizzare il database WordPress da opzioni orfane e ottimizzare il database WordPress che con il passare del tempo immagazzina sempre più dati e di conseguenza sempre più valori e voci che a volte non servono, appesantendo tutta la struttura del database di WordPress.
Pulire e ottimizzare il database WordPress porta a dei benefici in fatto di velocità, sia nelle risposte del database e di conseguenza alla velocità del sito stesso e sia sul risparmio della memoria utilizzata per far funzionare tutte le “interrogazioni” al database collegate tra loro, quindi WordPress collegato con il database ed entrambi collegati al server che gestisce l’intero sito.
Tranquillo, anche se ne capisci zero non è niente di cosi complicato, basta copiare ed incollare i “codici” (Query) ed eseguirle, ho preparato anche un video in merito, più facile di cosi !
La maggior parte della Query SQL elencate per pulire e ottimizzare il database WordPress sono tra le più conosciute, ma in questo articolo aggiungerò anche delle Query per pulire e ottimizzare le voci chiamate “_transients” che sono delle voci memorizzate in cache per impostazione predefinita da WordPress, per le informazioni ad esempio dei feed RSS e molti altre voci.
Queste voci “_transients” vengono salvate e non più cancellate, quindi anche queste con il passare del tempo aumentano e di conseguenza appesantiscono il database WordPress.
Le query SQL sono state utilizzate ed eseguite manualmente tramite pannello di controllo phpMyAdmin, ovviamente come sempre, non dimenticatevi di eseguire un backup del database di WordPress prima di fare QUALSIASI operazione.
Se hai acquistato un pacchetto hosting per WordPress di qualità il pannello di controllo phpMyAdmin è sempre presente, in caso non lo fosse (improbabile), dovrete installare un software che vi permetta di gestire il database WordPress che potete trovare direttamente sul sito di www.phpmyadmin.net dove è disponibile anche una versione da poter utilizzare in demo.
ELENCO QUERY SQL:
Di seguito le Query da utilizzare per pulire e ottimizzare database WordPress, ogni singola Query elencata sotto ad ogni specifica tabella, agisce e verrà eseguita solo per la tabella specificata.
Le Query puoi lanciarle sia all’interno del box SQL principale o eventualmente selezionando la tabella interessata e successivamente cliccare su “SQL” e lanciare la Query desiderata.
Ricordati che appena hai eseguito la Query ti verrà restituito il valore con tutte le Query totali cancellate.
TABELLA WP_POSTMETA:
Queste tre Query rimuovono tutte le voci inutilizzate all’interno della tabella.
DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock'; DELETE FROM wp_postmeta WHERE meta_key = '_edit_last'; DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';
TABELLA WP_COMMENTMETA:
Questa Query rimuove tutte le voci inutili inserite dal plugin askimet (spesso utilizzato e poi spesso rimosso).
DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet%';
Rimuove tutte le voci che non hanno nessun rapporto con la tabella wp_comments.
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);
TABELLA WP_COMMENTS:
Questa Query elimina tutti i commenti di spam in una volta sola.
DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';
Questa Query elimina tutti i commenti NON approvati in una volta sola.
DELETE from wp_comments WHERE comment_approved = '0';
TABELLA WP_POST:
Questa Query rimuove tutte le revisioni esistenti dei post/pagine.
DELETE FROM wp_posts WHERE post_type = 'revision';
Passiamo adesso alla rimozione delle voci inutilizzate “_transients” contenute all’interno della tabella wp_options, per far capire meglio di cosa sto parlando puoi eseguire una Query che richiamerà tutte le voci presenti all’interno del database e ti farà vedere quante ne sono presenti.
La Query da utilizzare è la seguente, lanciala e ti restituirà tutte le voci presenti.
SELECT option_name FROM wp_options WHERE option_name LIKE '_transient_timeout%' AND option_value < now();
TABELLA WP_OPTIONS:
Queste query rimuovono tutte le voci "_transients".
DELETE FROM wp_options WHERE option_name LIKE '_transient_rss_%'; DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_rss%'; DELETE FROM wp_options WHERE option_name LIKE '_transient_feed_%'; DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_feed_%'; DELETE FROM wp_options WHERE option_name LIKE '_site_transient_browser_%'; DELETE FROM wp_options WHERE option_name LIKE '_site_transient_timeout_browser_%';
ATTENZIONE: potresti avere il nome della tabelle del database differenti da quelle che ho riportato io che sono invece le tabelle database di default di WordPress, quindi nel caso ti basterà cambiare il nome con quello effettivo del nome tabella del tuo database.
VIDEO GUIDA:
Ho preparato un piccolo video per i meno esperti dove poter vedere passo passo come inserire le Query e i risultati che restituiscono.
Se hai qualche dubbio o domanda non esitate a commentare e cercherò di rispondere a tutti.
Articoli interessanti:
- Come configurare wordpress
- Indecisi? lista di siti creati con wordpress
- Strumenti gratuiti per analizzare siti internet
- Aggiungere css personalizzato tramite campi personalizzati wordpress
- Gestire commenti wordpress tramite database e query SQL
- Come eseguire il backup per un sito WordPress
- Sicurezza wordpress: Protezioni e impostazioni
Vietata la Riproduzione.
Questi sono gli articoli che mi entusiasmano ! Non sono un programmatore , mi diletto per passione , ma so riconoscere che hai scritto un ottimo articolo !
Grazie dei complimenti Marco troppo gentile.
Attimo articolo e video. Il mio database aveva raggiunto i 270 mega con la pulizia e ottimizzazione del database Askimet portato il database a 80 mega.
Articolo che merita 5 stelle ! Aggiunto nei preferiti per il futuro.
Saluti All
Grazie dei complimenti “All”. Ciao.
Ho un dubbio quando faccio la pulizia _transients successivamente controllo e trovo altri record (circa un centinaio)
Quelli anche vanno eliminati? e posso eliminarli direttamente dalla funzione di MySQL? Oppure devo usare i comandi che suggerisci?
Ottimo articolo, grazie…il più completo.
Salve Pietro, se esegui la procedura corretta non dovrebbe rimanere nessun record, se sai “lavorare” su database MySQL ovviamente si può agire direttamente sui record per eliminarli manualmente.
Ad ogni modo non sono certo quel centinaio di record a creare problemi/rallentamenti al sito/database. Saluti.
Grazie della risposta e scusa il ritardo ma non ho avuto nessuna notifica della tua risposta.
Ottimo post.
Lo metto nei segnalibri.
Grazie
Ciao Fausto, ho visto il tuo video su youtube, visto che sei ferrato sul tema e non son riuscito a trovare da nessuna parte una descrizione specifica su queste cose lo volevo chiedere a te: stavo pulendo il database ma non con le SQL ma utilizzando un plugin completo che si chiama WP-Sweep
ora ci sono dei termini che non so a cosa si riferiscono:
1) Orphaned Post Meta – ne ho 625 che mi occupano 1,25%
2) Orphaned Term Relationship – ne ho 26.714 che occupano il 78.16%
Ora a cosa si riferiscono, è utile eliminarli per velocizzare il database,? Il secondo mi sembra abnorme poi… Grazie.
Ciao Filippo, bhè sono le stesse funzioni che ho elencato io nell’articolo, l’unica differenza è che invece di eseguirle manualmente nel database le esegue il plugin. Ciao.
Gentile Admin-Fausto, seguendo la sua guida sono riuscita a liberare molto spazio dal database, ma dovrei fare anche la pulizia della cache. Può spiegarmi come fare?
Grazie mille in anticipo.
Bene Jessi, felice ti sia servita questa guida. Cosa usi per la cache ?