J'ai un site WordPress avec plus de 8000 messages et chaque fois que j'en ajoute un nouveau, le site ne répond plus. J'ai vérifié le journal des requêtes lentes de MySQL et j'ai découvert qu'il effectue une sélection qui renvoie la plupart des lignes de la table des publications et prend beaucoup de temps à exécuter.
Ceci est un exemple:
Query_time: 149.702704
Lock_time: 0.000078
Rows_sent: 4699
Rows_examined: 9398
Rows_affected: 0
Rows_read: 4699
use 488726_wp;
SELECT `ID`, `post_author`, `post_date`, `post_date_gmt`, `post_status`, `post_name`, `post_modified`, `post_modified_gmt`, `post_parent`, `post_type`
FROM `wp_posts`
WHERE ( (post_status = 'publish' AND (post_type = 'post' OR post_type = ''))
OR (post_status = 'publish' AND post_type = 'page') )
AND post_password=''
ORDER BY post_modified DESC;
Comment puis-je trouver la source de ces requêtes?
mysql
performance
holiveira
la source
la source
Ce que vous voudrez peut-être faire, c'est effectuer un EXPLAIN sur la requête comme ceci:
Cela révèlera que le modèle d'accès pris par MySQL collecte les données dont vous avez besoin.
Cependant, juste en regardant les clauses WHERE et ORDER BY, je voudrais faire la suggestion suivante: créer un index qui peut accélérer la requête. Puisque post_status et post_type ont des valeurs statiques dans la requête et post_modified présente un ordre de tri pour ces deux colonnes, essayez cet index s'il vous plaît:
Essaie !!!
la source
Ce problème est lié au plugin Google XML Sitemaps; http://wordpress.org/support/topic/plugin-google-xml-sitemaps-performance-issues-on-large-wp_posts-tables
Vous pouvez utiliser l'option "Activer la création manuelle du plan du site via GET Request". Et déclenchez manuellement la progression de la génération.
la source
Essayez le plugin suivant, Query Interface , qui vous permettra d'afficher les requêtes ainsi que de vous donner une interface où vous pouvez également vérifier ce que la requête prend en vérifiant ses index ou explication.
la source