Guide complet pour améliorer l'efficacité des requêtes sur la base de données de WordPress

Lecture en 3 minutes
2026-03-16
2026-06-06
2,193
Je reçois une commission lorsque vous achetez via les liens ci‑dessous, sans frais supplémentaires pour vous.

Guide complet pour améliorer l'efficacité des requêtes sur la base de données de WordPress

La base de données est le fondement d’un site WordPress : tous les contenus, les données des utilisateurs et les paramètres y sont stockés. À mesure que le contenu du site augmente, les requêtes inefficaces à la base de données deviennent progressivement le principal obstacle à la performance du site et affectent l’expérience de l’utilisateur. L’efficacité des requêtes à la base de données est directement liée à la vitesse de chargement des pages et à la consommation des ressources du serveur, et a également un impact indirect sur la récolte et le classement des données par les moteurs de recherche.

La génération d’une page WordPress peut impliquer des dizaines, voire des centaines d’interactions avec la base de données. Par conséquent, l’optimisation des requêtes SQL est un élément essentiel et très efficace dans les efforts d’amélioration des performances. Nous allons expliquer de manière systématique, à plusieurs niveaux, comment améliorer l’efficacité des requêtes de la base de données de WordPress.

Comprendre le cycle de vie des requêtes sur la base de données de WordPress

Afin d’optimiser efficacement les performances, il est d’abord nécessaire de comprendre la manière dont les requêtes sont générées et exécutées dans WordPress. Une requête typique passe par plusieurs étapes clés : l’initiation, le traitement, puis le retour des résultats. Chacune de ces étapes offre des possibilités d’optimisation.

Lectures recommandées Comment utiliser un thème WordPress pour créer un site web d'entreprise efficace et esthétique ?

La classe d’objet de requête intégrée à WordPress

À l’étage d’exécution principal, WordPress utilise principalement…WP_QueryCette classe est conçue pour gérer diverses requêtes de données. Elle constitue l’élément central de la construction du contenu des pages (tels que les articles, les types de pages personnalisés, etc.). Par exemple, le contenu de la page d’accueil, des pages de catégories et des listes d’articles est principalement généré à partir de cette classe.WP_QueryIl est piloté par des exemples concrets. Il encapsule le processus complexe de construction de requêtes SQL, et les développeurs définissent les conditions de recherche à l’aide d’un tableau de paramètres.

Hébergement WordPress par UltraHost
Garantie de remboursement dans les 30 jours, bande passante illimitée et base de données, protection gratuite contre les attaques DDoS. Avantage de 501 TP4T pour les achats sur 3 ans.
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 10,
    'category_name' => 'news'
);
$query = new WP_Query($args);

Mécanisme de cache des résultats de la recherche

WordPress intègre un mécanisme de cache d’objets conçu pour réduire le nombre de requêtes répétées au sein de la base de données. Lorsque…get_post()get_term_by()Lorsque des fonctions sont appelées, WordPress tente d’abord de récupérer les données depuis la mémoire cache.

L’essence de ce cache est…WP_Object_CacheClasse. Il est cependant important de noter que, par défaut (c’est-à-dire en l’absence d’un plugin de cache persistante), cette cache est “ non persistante ” et n’existe que pendant la durée de vie d’une seule demande de page. Cela signifie que, la prochaine fois que l’utilisateur accède au site, la cache est invalidée et la requête doit à nouveau être effectuée sur la base de données. Afin d’obtenir une amélioration significative des performances, il est généralement nécessaire de combiner cette cache avec un backend de cache d’objets persistants tel que Redis ou Memcached, et de les intégrer via un plugin comme Redis Object Cache.WP_Object_CacheConnexion.

Outils couramment utilisés pour analyser les requêtes lentes

La localisation est la première étape de l’optimisation. L’outil le plus direct pour cela est celui fourni par WordPress.SAVEQUERIESDéboguer les constantes. Définissez-les comme suit…trueWordPress enregistre toutes les requêtes SQL exécutées ainsi que le temps qu’elles ont pris dans un tableau global.

// 在 wp-config.php 中添加
define('SAVEQUERIES', true);
// 页面底部(如footer.php)检查查询
if (current_user_can('administrator')) {
    global $wpdb;
    print_r($wpdb->queries);
}

De plus, de nombreux plugins de surveillance des requêtes professionnelles, tels que Query Monitor, offrent une interface plus intuitive pour afficher toutes les requêtes, leur source d’appel (plugin ou thème), ainsi que le temps d’exécution. Ces plugins permettent également de mettre en évidence les requêtes lentes, ce qui constitue un outil précieux pour l’optimisation des environnements de développement. Dans les environnements de production, il est conseillé d’activer le journal des requêtes lentes (Slow Query Log) des serveurs de base de données (comme MySQL) afin de procéder à un suivi à long terme.

Lectures recommandées Guide complet pour WooCommerce : Créez votre site e-commerce professionnel à partir de zéro

Pratiques d’optimisation au niveau du code source

Le code est la base de la réalisation de consultations efficaces. Que ce soit pour le développement de thèmes ou de plugins, suivre les meilleures pratiques permet d’éviter les problèmes de performance dès le départ.

Utiliser correctement les fonctions de l’API principale

WordPress propose une gamme d’APIs riches et optimisées qui devraient être privilégiées plutôt que d’écrire des requêtes SQL directement. Par exemple, pour obtenir les articles d’une catégorie donnée, il est préférable d’utiliser les fonctions fournies par l’API plutôt que de rédiger des commandes SQL manuellement.
Exemple contraire (inefficace) : Utiliser directement la méthode sans réflexion.$wpdb->get_results()Écrivez la requête SQL originale, en prenant en compte le fait que le cache pourrait être ignoré.
Exemple positif (efficace) : UtilisationWP_Queryou ses fonctions d'encapsulationget_posts()Il utilise automatiquement la mémoire cache, et ses performances sont gérées par l’équipe principale.

Il convient d’éviter d’utiliser des éléments tels que… dans les boucles.get_post_meta()Il est incorrect d’utiliser une fonction pour effectuer un grand nombre de requêtes. La bonne pratique consiste à initialiser les données nécessaires avant de lancer les requêtes.WP_QueryLorsque c’est le moment, procédez par…'meta_query'Filtrer les paramètres, ou les utiliser…update_postmeta_cacheFonctionnalité associée : obtenir en une seule fois les métadonnées de tous les articles.

hosting.com Hébergement partagé
Hautes performances avec les CPU AMD EPYC, stockage SSD NVMe et LiteSpeed, support interne expert 24h/24 et 7j/7, mesures de sécurité avancées, notamment SSL, protection contre la force brute, les logiciels malveillants et le DDoS, économies pouvant aller jusqu'à 73%.

L’API Transients permet de mettre en œuvre un système de cache de données à court terme.

Pour les requêtes coûteuses qui nécessitent une faible réactivité (comme les résultats des appels à des API externes ou des calculs complexes), il est conseillé d’utiliser l’API Transients de WordPress pour mettre en cache les données. Son principe consiste à stocker ces données dans la base de données (ou dans un cache d’objets, si disponible), sous un nom de clé spécifique, accompagné d’une date d’expiration.
Par exemple, mettre en cache une liste d’articles populaires :

$popular_posts = get_transient('mytheme_popular_posts');
if (false === $popular_posts) {
    // 如果缓存不存在或已过期,执行复杂查询
    $args = array('meta_key' => 'view_count', 'orderby' => 'meta_value_num', 'posts_per_page' => 5);
    $popular_posts = new WP_Query($args);
    // 缓存查询结果12小时(43200秒)
    set_transient('mytheme_popular_posts', $popular_posts, 43200);
}

Optimiser la construction de requêtes personnalisées

Lorsqu’il est nécessaire d’utiliser…$wpdbLors de l'exécution de requêtes personnalisées sur une classe, il est essentiel de respecter strictement les normes de sécurité et d'utiliser les méthodes d'assistance appropriées. Assurez-vous de…$wpdb->prepare()Préparez la requête pour éviter les injections SQL et assurez que les données soient correctement échappées.

global $wpdb;
$user_id = 123;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "SELECT * FROM {$wpdb->prefix}custom_table WHERE user_id = %d AND status = %s",
        $user_id,
        'active'
    )
);

En même temps, il faut s’assurer que les champs de la table de requête disposent d’index appropriés.JOINOpérationnel ou complexeWHERELes sous-clauses sont particulièrement importantes à cet égard.

Lectures recommandées Guide ultime pour l’optimisation de WordPress : des stratégies complètes pour améliorer la vitesse et la sécurité du site.

Optimiser les requêtes grâce à des plugins avancés et à des services externes

Lorsque l’optimisation du code atteint ses limites, il est possible d’utiliser des outils et des services éprouvés pour obtenir de nouvelles améliorations de performances.

Activer le cache d'objets persistants

C’est l’un des moyens les plus efficaces pour les sites web à fort trafic. En installant des serveurs Redis ou Memcached, et en les associant aux plugins WordPress appropriés (tels que “Redis Object Cache” ou “Memcached Redux”), il est possible d’améliorer considérablement les performances du site.WP_Object_CacheLes données sont stockées en mémoire.
Cela rend possible le cache des demandes entre les pages. Par exemple, une fois que le fragment HTML d’un article populaire a été généré et mis en cache, toutes les demandes ultérieures des utilisateurs sont lues directement en mémoire, évitant ainsi complètement l’exécution du PHP et les requêtes sur la base de données. Après avoir effectué les réglages avec succès, vous verrez une réduction significative du nombre de requêtes.

Hébergement partagé InterServer
Hébergement mutualisé $2.50 USD par mois, premier mois $0.1 USD code promo tryinterserver, 461 scripts cloud apps, installation en un clic.

Utiliser la pagination et le chargement différé (lazy loading)

Le fait de faire défiler ou de charger un grand nombre d'articles indéfiniment peut déclencher des requêtes massives. Cela devrait être évité.WP_QueryUtiliser de manière judicieuse et intelligente.'posts_per_page'Avec des paramètres de pagination, il est possible d’éviter de récupérer des centaines ou des milliers d’enregistrements en une seule fois. Pour les listes longues ou les bibliothèques d’images, l’activation de la technologie de chargement différé (Lazy Load) permet de ne charger que les éléments qui ne sont pas visibles dans la fenêtre d'affichage que lorsque c’est nécessaire, ce qui réduit considérablement la charge sur la base de données lors du chargement initial de la page.

Considérez l’introduction d’une copie de la base de données en mode lecture seule.

Pour les sites WordPress très volumineux qui effectuent davantage de lectures que d’écritures (comme les portails d’actualités), la réplication maître-esclave de la base de données peut être envisagée. Toutes les opérations d’écriture (publier des articles, des commentaires) sont dirigées vers la base de données principale, tandis que la plupart des opérations de lecture sont distribuées sur une ou plusieurs bases de données secondaires en lecture seule. Cela nécessite l’utilisation de plugins ou une personnalisation avancée pour mettre en œuvre la séparation des opérations de lecture et d’écriture, ce qui représente un certain niveau de complexité technique. Cependant, cette approche permet d’augmenter considérablement la capacité de la base de données à gérer des lectures simultanées.

Optimization of server and database configurations

En fin de compte, toutes les requêtes doivent être exécutées sur des serveurs MySQL ou MariaDB. L’optimisation de la configuration du serveur est la clé pour garantir des performances d’interrogation efficaces.

Ajustements clés des paramètres de performance de MySQL

Dans le fichier de configuration du serveur de base de données (par exemple…)my.cnfDans ces paramètres, plusieurs sont essentiels pour la performance de WordPress.innodb_buffer_pool_sizeLa taille de la mémoire tampon InnoDB doit être réglée entre 70 % et 80 % de la mémoire disponible (en unités de 1 TB). Cela détermine la quantité de données et d’index que la base de données peut stocker en mémoire.query_cache_size(Les informations sur la taille de la mémoire de cache) Bien que cette fonction ait été supprimée dans les versions 8.0 et ultérieures, elle était utile dans les versions antérieures pour les cas où les requêtes simples étaient très fréquentes.max_connectionsLes paramètres doivent être réglés de manière appropriée afin de prendre en charge à la fois les connexions depuis le serveur Web et les connexions de réserve.

Effectuer régulièrement des maintenances sur la base de données.

WordPress génère de nombreux données redondantes au cours de son utilisation, telles que des versions révisées, des drafts, des commentaires en attente d’approbation, ou des données temporairement obsolètes. Ces données alourdissent inutilement les tables de base de données et réduisent l’efficacité des requêtes. Il est possible d’utiliser régulièrement des plugins comme “ WP-Optimize ” ou “ Advanced Database Cleaner ” pour effectuer un nettoyage. De plus, des opérations d’optimisation (OPTIMIZE TABLE) ou de réparation (REPAIR TABLE) sur les tables de base de données peuvent aider à organiser les fragments de données et à améliorer l’efficacité des opérations d’entrée/sortie (I/O). Il est conseillé de procéder à ces opérations pendant les périodes de faible activité, via phpMyAdmin ou depuis la ligne de commande.

Créer des index efficaces pour les tables de base de données

Il s’agit d’optimisations essentielles au niveau de la base de données. Les index sont comme les sommaires d’un livre, ils aident l’engine de la base de données à localiser rapidement les données. Tout d’abord, il est nécessaire de s’assurer que les tables principales de WordPress (en particulier…)wp_postswp_postmetawp_commentsLes index de clé principale et de clé étrangère présents sur les tables sont complets. De plus, pour ceux qui apparaissent fréquemment…WHEREORDER BYOuJOINLes champs présents dans la condition (comme…)post_statuspost_typecomment_post_IDmeta_keyIl conviendra d’évaluer s’il est nécessaire d’ajouter un index simple ou un index composite. L’ajout d’un index peut être effectué à l’aide des commandes SQL via phpMyAdmin, par exemple :

ALTER TABLE wp_postmeta ADD INDEX idx_meta_key (meta_key(50));

Attention : L’ajout d’un index consomme de l’espace disque supplémentaire et ralentit légèrement la vitesse d’écriture. Il est donc nécessaire de peser les avantages et les inconvénients avant de procéder.

résumés

Optimiser les requêtes de base de données WordPress est un projet systématique qui nécessite une collaboration sur quatre dimensions : le diagnostic, le codage, les outils et l'exploitation et la maintenance. La meilleure approche consiste tout d'abord à utiliser des outils pour localiser précisément les requêtes lentes, puis à respecter strictement les normes d'API et de mise en cache dans le développement pour éviter le code inefficace. Ensuite, introduire la mise en cache d'objets persistants sur le site Web pour obtenir une amélioration immédiate des performances. Enfin, effectuer une configuration et une maintenance raisonnables au niveau du serveur de base de données et créer des index efficaces pour les grandes tables spécifiques. Grâce à cette série d'optimisations combinées, même les sites WordPress avec une grande quantité de contenu peuvent garantir des requêtes de base de données efficaces et des réponses rapides, offrant ainsi une expérience d'accès fluide aux utilisateurs et aux moteurs de recherche.

FAQ Foire aux questions

Où sont stockés les données “ transitoires ” (ou « temporaires ») dans WordPress ?

L’emplacement où sont stockés les données provenant de l’API Transients de WordPress dépend de vos configurations. Si le site n’a pas activé le cache d’objets persistants (comme Redis), les données temporaires (ou « transient data ») seront stockées dans la base de données.wp_optionsDans le tableau (en…)_transient_Si la mise en cache des objets persistants est activée, les données transitoires sont stockées en priorité dans la mémoire (par exemple, dans Redis). Cela permet des vitesses de lecture et d’écriture extrêmement rapides et réduit considérablement la charge sur la base de données.

Comment nettoyer en masse les données transitoires obsolètes ?

Les données transitoires obsolètes ne sont pas toujours automatiquement supprimées. Vous pouvez utiliser des plugins de nettoyage de base de données spécialisés (tels que WP-Optimize), qui proposent généralement la possibilité de nettoyer ces données d’un clic. Ou, si la sécurité n’est pas un problème, vous pouvez également exécuter des commandes SQL directement depuis phpMyAdmin pour supprimer les données obsolètes.

DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%';

Est-il normal que le nombre de requêtes diminue de manière significative après l’activation du cache d’objets Redis ?

C’est tout à fait normal et constitue l’un des principaux bénéfices de l’activation du cache d’objets persistants. La diminution du nombre de requêtes signifie que de grandes quantités de données (comme les menus, les objets d’articles, les résultats des recherches) sont directement récupérées en mémoire (Redis), évitant ainsi les demandes à la base de données. Cela réduit considérablement la charge CPU et les opérations d’entrée/sortie (I/O) du serveur de base de données, ce qui est un indicateur clair d’amélioration des performances. Vous pouvez constater une augmentation significative du pourcentage de “ hits de cache ” à l’aide du plugin Query Monitor.

Quels champs de la base de données devraient être indexés ?

L’établissement d’index doit suivre les principes des requêtes fréquentes et d’une grande capacité de filtrage. Il convient de se concentrer sur les champs qui sont souvent utilisés pour les recherches, le tri et les associations. Dans WordPress, les champs typiques pouvant être indexés incluent :wp_poststableaupost_typeetpost_statusCombination (fréquemment utilisée pour rechercher des articles déjà publiés)wp_postmetatableaumeta_key(Souvent utilisé pour filtrer les données en fonction de métadonnées spécifiques), ainsi quewp_commentstableaucomment_post_ID(Utilisé pour associer les articles aux commentaires.) Avant d’ajouter l’index, il est préférable d’analyser les journaux de requêtes lentes de manière détaillée.