Si ton site WordPress met trop de temps à charger ou si l’admin réagit lentement, il y a de fortes chances que le problème se cache dans la base de données. En particulier dans trois zones sensibles : la table wp_options, les transients WordPress et les révisions d’articles. Dans les 200 premières secondes d’un chargement, les requêtes mal indexées, un autoload trop lourd et des entrées périmées peuvent suffire à dégrader la performance MySQL WordPress. Dans ce guide orienté action, on te montre comment optimiser base de données WordPress étape par étape : comprendre ce qui ralentit, mesurer, nettoyer et prévenir. Tu vas apprendre à repérer un autoload gonflé dans wp_options, à purger proprement les transients WordPress qui s’accumulent, et à nettoyer révisions WordPress sans perdre d’historique important. Objectif : réduire les requêtes lentes et rendre ton back-office comme ton front plus réactifs, sans tout casser ni perdre de données.
Au programme : diagnostic avec les bons outils, plan de nettoyage sécurisé, réglages pérennes, et quelques optimisations MySQL faciles à appliquer. Si tu préfères déléguer, l’équipe WP Builders peut aussi prendre le relais pour automatiser ces opérations, surveiller tes métriques et t’assurer une base propre dans la durée.
Pourquoi ta base WordPress ralentit (et comment l’éviter)
WordPress est robuste, mais certaines tables grossissent silencieusement : wp_options (options de configuration, cache, sessions), wp_posts (articles, pages), wp_postmeta (métadonnées), sans oublier wp_comments, wp_terms et wp_usermeta. Trois facteurs se combinent souvent :
- Autoload trop lourd dans wp_options : tout ce qui est marqué
autoload = yesest chargé à chaque requête. Un seul enregistrement volumineux peut dégrader toutes les pages. - Transients expirés non nettoyés : ils devraient disparaître, mais certains plugins les laissent traîner, gonflant options et ralentissant les requêtes.
- Révisions en surnombre : chaque mise à jour d’un article ajoute une révision. Sur un site éditorial, ça explose vite.
Bonne nouvelle : ces freins se corrigent sans refonte, à condition de mesurer et d’agir méthodiquement.
Mesurer d’abord : identifier les requêtes lentes et les tables lourdes
Avant d’optimiser, on observe. Trois approches complémentaires :
1) Inspecter les requêtes côté WordPress
Installe l’extension Query Monitor pour lister les requêtes lentes, les hooks coûteux et les appels aux options. Tu peux repérer en un coup d’œil un get_option() trop volumineux ou une meta_query mal indexée.
2) Observer MySQL directement
Si tu as accès au serveur, active le slow query log ou utilise EXPLAIN dans MySQL pour comprendre le plan d’exécution et le nombre de lignes scannées. La doc EXPLAIN MySQL te montre comment lire les colonnes clés et réduire les scans complets.
3) Contrôler la taille des tables
-- Taille des tables (MySQL)SELECT table_name, ROUND((data_length + index_length)/1024/1024, 2) AS size_mbFROM information_schema.tablesWHERE table_schema = DATABASE()ORDER BY size_mb DESC;
Note les tables qui explosent (souvent wp_options, wp_postmeta, ou wp_comments en e-commerce). On traitera les plus critiques en priorité.
Optimiser wp_options sans casser le site
Le cœur du problème est souvent l’autoload. Un autoload gonflé = des millisecondes perdues à chaque requête, front et admin compris.
1) Lister les options autoload les plus volumineuses
-- Top 20 options autoload par taille estiméeSELECT option_name, LENGTH(option_value) AS bytesFROM wp_optionsWHERE autoload = 'yes'ORDER BY bytes DESCLIMIT 20;
Interprétation : cherche des options à plusieurs centaines de kilo-octets (voire en Mo). Il s’agit souvent de caches persistants, sessions, ou configurations d’extensions stockées sous forme de tableaux sérialisés.
2) Désactiver l’autoload pour les options non critiques
Avant tout changement : fais une sauvegarde. Ensuite, passe certaines options en autoload = 'no' si elles ne sont pas nécessaires à chaque requête (ex. gros caches internes d’un plugin).
-- Exemple : désactiver l’autoload d’une option volumineuseUPDATE wp_optionsSET autoload = 'no'WHERE option_name = 'nom_option_volumineuse';
Bon réflexe : teste en préproduction. Un site peut dépendre d’une option au chargement de la page d’accueil (rare mais possible). En cas de doute, change progressivement et surveille.
3) Purger les options orphelines
Quand on désinstalle une extension, elle laisse parfois des options. Si tu es sûr qu’une option ne sert plus :
DELETE FROM wp_options WHERE option_name LIKE 'prefixe_plugin%';
Fais-le uniquement si tu maîtrises le périmètre du plugin concerné.
Nettoyer les transients WordPress sans pitié
Les transients sont des caches temporaires stockés en base. Ils devraient expirer automatiquement, mais certains expirés restent présents. Ça alourdit wp_options et ses requêtes.
1) Comprendre le cycle de vie des transients
Un transient = _transient_{nom} + _transient_timeout_{nom}. À l’expiration, WordPress les supprime lors des chargements suivants. Sauf si le nettoyage échoue ou si une extension les recrée trop souvent. La documentation officielle de la Transients API détaille les bonnes pratiques.
2) Supprimer tous les transients expirés
-- Supprimer les transients expirés (SQL)DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%' AND option_name IN ( SELECT REPLACE(option_name, '_transient_timeout_', '_transient_') FROM wp_options WHERE option_name LIKE '_transient_timeout_%' AND option_value < UNIX_TIMESTAMP() );
En WP-CLI, c’est encore plus simple :
# Supprimer tous les transients expirésauth wp transient delete-expired# Ou tout supprimer (attention, les caches se reconstruiront)auth wp transient delete --all
Remplace auth par ton préfixe d’exécution si nécessaire (sudo -u, chemin, etc.).
3) Prévenir la dérive
- Plugins de cache : vérifie leurs réglages de persistance et la durée des transients.
- CRON : assure-toi que les tâches planifiées s’exécutent (voir section WP-Cron ci-dessous).
- Monitoring : mets une alerte si le nombre de transients dépasse un seuil (par exemple > 10 000).
Révisions WordPress : limiter, nettoyer, préserver
Les révisions sont utiles pour l’historique éditorial, mais par défaut leur nombre est illimité. Sur les sites actifs, ça pèse vite sur wp_posts et wp_postmeta.
1) Limiter le nombre de révisions à l’avenir
Dans wp-config.php :
define('WP_POST_REVISIONS', 10); // ou 5, selon ton process// ou pour les désactiver totalement (non recommandé en éditorial)// define('WP_POST_REVISIONS', false);
2) Nettoyer les anciennes révisions en sécurité
Supprime les révisions excédentaires, conserve les plus récentes. Exemple simple (toutes les révisions) :
-- Supprimer toutes les révisions (prudence !)DELETE a,b,cFROM wp_posts aLEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)WHERE a.post_type = 'revision';
Mieux : garde les N dernières révisions par contenu en utilisant un script WP-CLI ou une extension spécialisée. En WP-CLI (purge globale) :
wp post delete $(wp post list --post_type=revision --format=ids) --force
Astuce : commence par une sauvegarde et teste sur préprod pour vérifier que les comparaisons d’historique dont ton équipe a besoin restent disponibles.
WP-Cron, sessions et autres facteurs cachés
Si le nettoyage ne se déclenche jamais, c’est peut-être WP-Cron qui ne s’exécute pas correctement (faible trafic, cron désactivé, accès bloqué par un firewall).
- Hébergeur : configure un cron système qui appelle
wp-cron.phptoutes les 5 minutes. - Déport : sur un site à fort trafic, désactive le cron natif et utilisez une tâche planifiée serveur pour stabiliser l’exécution.
- Sessions/options temporaires : certaines extensions stockent des sessions en base (dans
wp_options). Surveille et purge régulièrement.
Accélérer les meta queries et les listings : index MySQL utiles
Beaucoup de lenteurs proviennent de requêtes sur wp_postmeta ou wp_usermeta. Par défaut, les index ne couvrent pas tous les cas. Deux optimisations classiques :
1) Index composite sur wp_postmeta
Si tu utilises souvent des meta_query filtrées par meta_key et post_id, ajoute un index composite :
ALTER TABLE wp_postmetaADD INDEX meta_key_post_id (meta_key(191), post_id);-- Variante utile : (post_id, meta_key)ALTER TABLE wp_postmetaADD INDEX post_id_meta_key (post_id, meta_key(191));
Pourquoi (191) ? Pour rester compatible avec les collations utf8mb4 sur d’anciennes versions MySQL qui limitent la taille des index sur les champs texte.
2) Index ciblés sur wp_usermeta et wp_term_relationships
ALTER TABLE wp_usermetaADD INDEX user_id_meta_key (user_id, meta_key(191));ALTER TABLE wp_term_relationshipsADD INDEX term_taxonomy_object (term_taxonomy_id, object_id);
Test impératif en préproduction : EXPLAIN avant/après pour valider la réduction de lignes scannées.
Réduire la taille des tables et optimiser le stockage
Après nettoyage, compresse et réorganise les tables :
-- Optimiser les tables InnoDB (libère l’espace inutilisé)OPTIMIZE TABLE wp_options, wp_posts, wp_postmeta, wp_terms, wp_term_taxonomy, wp_term_relationships, wp_comments, wp_commentmeta;
Assure-toi d’utiliser InnoDB (plus fiable et performant que MyISAM), d’avoir un encodage utf8mb4, et un innodb_buffer_pool_size ajusté à ta RAM si tu gères le serveur.
Automatiser avec WP-CLI : commandes prêtes à l’emploi
# Lister la taille des tableswp db size --tables --format=table# Transients : purge expirés et completswp transient delete-expiredwp transient delete --all# Révisions : purge globale (prudence)wp post delete $(wp post list --post_type=revision --format=ids) --force# Options autoload lourdes (top 20)wp db query "SELECT option_name, LENGTH(option_value) AS bytes \\nFROM wp_options WHERE autoload='yes' ORDER BY bytes DESC LIMIT 20;"# Optimiser les tableswp db optimize
Astuce pro : planifie ces tâches via cron système (hebdomadaire pour transients, mensuel pour révisions) après une sauvegarde automatique.
Process sécurisé en 7 étapes (le circuit WP Builders)
- Sauvegarde base + fichiers, vérifiée et restaurable.
- Clonage en préprod pour tester sans risque.
- Audit : Query Monitor, tailles de tables, EXPLAIN.
- Nettoyage : transients, révisions, options orphelines.
- Optimisation : autoload, index, WP-Cron, cache objet.
- Validation : métriques TTFB, temps requêtes, admin.
- Automatisation : scripts WP-CLI, monitoring, alertes.
Ce workflow limite les régressions et garantit des gains durables. C’est exactement ce que notre équipe applique lors d’une intervention de maintenance programmée.

Maintenance WordPress Pro
Confie le nettoyage et l’optimisation de ta base à nos experts. Intervention rapide, sauvegardes garanties, résultats mesurables.
Cas concrets : les gains que tu peux attendre
Site vitrine (200 pages)
- -40 % de temps d’exécution sur les pages les plus vues après réduction de l’autoload de 4,5 Mo à 600 Ko.
- -60 % de révisions (base -120 Mo) et listing d’articles plus réactif en admin.
Blog média (1 500 articles)
- -70 % de transients stockés et +25 % de vitesse moyenne back-office.
- Meta queries divisées par 3 avec un index composite sur
wp_postmeta.
Boutique WooCommerce
- Nettoyage transients et sessions : checkout plus rapide et moins d’erreurs 502 aux pics de trafic.
- Optimisation
wp_postmeta: filtres produits plus rapides, moins de CPU.
Prévenir plutôt que guérir : bonnes pratiques durables
- Limiter les extensions et évaluer leur impact (profilage régulier).
- Cache objet (Redis/Memcached) pour réduire la pression sur MySQL.
- Mises à jour régulières du cœur, des plugins et du PHP.
- Surveillance : alerte si autoload > 1 Mo, si le nombre de transients explose, ou si une table grossit de 20 % en un mois.
- Documentation interne : qui publie, quand, comment (limiter les révisions inutiles).
Si tu veux gagner du temps et dormir tranquille, WP Builders peut installer ces garde-fous, automatiser le nettoyage et suivre les métriques clés pour toi.
Checklist express à garder sous la main
- Sauvegarde complète OK et test de restauration.
- Query Monitor installé et relevé des requêtes lentes.
- wp_options : top 20 autoload listé, options volumineuses traitées.
- Transients expirés purgés (WP-CLI ou SQL).
- Révisions limitées dans
wp-config.php, anciennes révisions nettoyées. - Index utiles ajoutés (préprod + EXPLAIN de contrôle).
- OPTIMIZE TABLE exécuté.
- WP-Cron vérifié (cron système si besoin).
- Automatisation mensuelle via WP-CLI.
FAQ rapide (intégrée sur la page)
Tu trouveras une FAQ complète avec les cas fréquents de nettoyage, les risques et nos réponses d’experts un peu plus bas.
Conclusion : une base propre, un WordPress qui répond
En optimisant wp_options, en purgant les transients WordPress et en nettoyant les révisions WordPress, tu élimines les goulots d’étranglement les plus fréquents. Ajoute quelques index MySQL bien choisis, active un cache objet, et tu obtiens un site plus réactif, plus stable et plus économique en ressources. Ces gestes relèvent de la maintenance préventive : un peu de méthode, des sauvegardes, des tests, et des routines automatisées.
Besoin d’un partenaire pour industrialiser ces bonnes pratiques ? Les experts WP Builders assurent audit, nettoyage, optimisation et suivi, avec des SLA clairs et des résultats mesurables. Tu profites d’une base plus légère et d’un WordPress prêt pour la croissance.


