2010-03-15 6 views
0

J'ai des requêtes Mysql très lentes venant de mon site wordpress. Cela ralentit tout et je pense que cela consume l'utilisation du processeur. J'ai collé les résultats Explain pour les deux requêtes les plus fréquemment problématiques ci-dessous. C'est un résultat typique - bien que très rarement les requêtes semblent être effectuées à une vitesse plus normale. Je possède les index wordpress habituels sur les tables de base de données. Vous verrez que l'une des requêtes est générée à partir du code de base wordpress, et non de quelque chose de spécifique - comme le thème - pour mon site.wordpress générant des requêtes mysql lentes - est-ce un problème d'index?

J'ai un vague sentiment que la base de données ne sont pas toujours en utilisant les index/ne les utilise pas correctement ...

Est-ce exact? Est-ce que quelqu'un sait comment le réparer? Ou est-ce un problème différent entièrement?

Un grand merci à l'avance pour toute aide quiconque peut offrir - il est extrêmement apprécié

Requête: [wp-blog-header.php (14): wp()]

SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 6 
id 
select_type 
table 
type 
possible_keys 
key 
key_len 
ref 
rows 
Extra 
1 
SIMPLE 
wp_posts 
ref 
type_status_date 
type_status_date 
63 
const 
427 
Using where; Using filesort 
Query time: 34.2829 (ms) 

9) Question: [wp-content/themes/MLDH/index.php (40): query_posts()]

SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID NOT IN (SELECT tr.object_id FROM wp_term_relationships AS tr INNER JOIN wp_term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy = 'category' AND tt.term_id IN ('217', '218', '223', '224')) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 6 
id 
select_type 
table 
type 
possible_keys 
key 
key_len 
ref 
rows 
Extra 
1 
PRIMARY 
wp_posts 
ref 
type_status_date 
type_status_date 
63 
const 
427 
Using where; Using filesort 
2 
DEPENDENT SUBQUERY 
tr 
ref 
PRIMARY,term_taxonomy_id 
PRIMARY 
8 
func 
1 
Using index 
2 
DEPENDENT SUBQUERY 
tt 
eq_ref 
PRIMARY,term_id_taxonomy,taxonomy 
PRIMARY 
8 
antin1_lovemusic2010.tr.term_taxonomy_id 
1 
Using where 
Query time: 70.3900 (ms) 
+0

J'ai édité vos requêtes pour ressembler à du code, mais je ne comprends pas ce que le texte et la fin est. Est-ce que vous l'avez collé quelque part et que vous y avez envoyé un texte indésirable quelque part? –

+0

@JS Bangs Je pense que c'est MySQL "EXPLAIN" résultat de la commande de la grille. – antyrat

Répondre

0

Vous pouvez essayer wp-cache plug-in. Aussi, vous pouvez lire ce article il explique que SQL_CALC_FOUND_ROWS pas la meilleure solution aux questions.

+0

@JS Bangs @antyrat Merci d'avoir regardé ça si vite! yes - c'est un résultat explicite (généré à partir du plugin Wp-Tuner). Le bit à la fin est ce que Explain dit que la base de données est en train de faire et le temps qu'il faut pour le faire ... – tash

+0

J'ai le WP Super Cache en cours d'exécution - mais les requêtes wp-blog-header sont générées avant le chargement de la page, donc la mise en cache n'aide pas dans cette zone. Aussi, je voudrais corriger la lenteur de la requête Mysql si possible, plutôt que de mettre en cache le résultat lent. – tash

+0

@tash Combien d'entrées avez-vous dans votre base de données avec la table wp_posts? – antyrat