Home › Forum › Amministrazione WP › Troppe query: tabella rewrite rules?
-
AutorePost
-
-
31 Luglio 2010 alle 13:14 #14615dariodnPartecipante
Giunto quasi al termine dello sviluppo di un sito, sto cercando di ottimizzarlo.
Attivando il debug di WordPress noto che ogni pagina carica 200 queries (in un secondo).
Il dettaglio delle query è il seguente:
Array
(
[0] => Array
(
[0] => 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, 100
[1] => 0.092453002929688
[2] => require, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts
)
[1] => Array
(
[0] => SELECT FOUND_ROWS()
[1] => 0.0010440349578857
[2] => require, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts
)
[2] => Array
(
[0] => SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag') AND tr.object_id IN (694, 692, 689, 678, 676, 667, 665, 663, 660, 656, 654, 651, 647, 644, 641, 638, 633, 630, 528, 470, 467, 376, 304, 280, 279, 278, 276, 235, 230, 226, 224, 221, 219, 217, 213, 210, 206, 204, 202, 200, 197, 195, 193, 191, 189, 187, 178, 176, 173, 170, 168, 166, 163, 148, 140, 138, 136, 132, 130, 128, 118, 116, 114, 112, 108, 106, 94, 90, 69, 66, 64, 59, 55, 53, 51, 49, 44, 20, 3) ORDER BY t.name ASC
[1] => 0.070294857025146
[2] => require, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts, update_post_caches, update_object_term_cache, wp_get_object_terms
)
[3] => Array
(
[0] => SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (694,692,689,678,676,667,665,663,660,656,654,651,647,644,641,638,633,630,528,470,467,376,304,280,279,278,276,235,230,226,224,221,219,217,213,210,206,204,202,200,197,195,193,191,189,187,178,176,173,170,168,166,163,148,140,138,136,132,130,128,118,116,114,112,108,106,94,90,69,66,64,59,55,53,51,49,44,20,3)
[1] => 0.030115127563477
[2] => require, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts, update_post_caches, update_postmeta_cache, update_meta_cache
)
[4] => Array
(
[0] => 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, 1
[1] => 0.0021200180053711
[2] => require, require_once, include, query_posts, WP_Query->query, WP_Query->get_posts
)
[5] => Array
(
[0] => SELECT FOUND_ROWS()
[1] => 0.00041103363037109
[2] => require, require_once, include, query_posts, WP_Query->query, WP_Query->get_posts
)
[6] => Array
(
[0] => SELECT * FROM wp_users WHERE ID = 54 LIMIT 1
[1] => 0.00087904930114746
[2] => require, require_once, include, the_post, WP_Query->the_post, setup_postdata, get_userdata
)
[7] => Array
(
[0] => SELECT meta_key, meta_value FROM wp_usermeta WHERE user_id = 54
[1] => 0.010909080505371
[2] => require, require_once, include, the_post, WP_Query->the_post, setup_postdata, get_userdata, _fill_user
)
[8] => Array
(
[0] => SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) WHERE 1=1 AND wp_term_taxonomy.taxonomy = 'category' AND wp_term_taxonomy.term_id IN ('11') AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10
[1] => 0.014397144317627
[2] => require, require_once, include, WP_Query->WP_Query, WP_Query->query, WP_Query->get_posts
)
[9] => Array
(
[0] => SELECT FOUND_ROWS()
[1] => 0.00049591064453125
[2] => require, require_once, include, WP_Query->WP_Query, WP_Query->query, WP_Query->get_posts
)
ho provato a disattivare i plugin ma non cambia nulla. Cercando un po' sulla Rete sono finito a controllare la tabella wp-options>rewrite rules che contiene moltissime righe... alcune, a mio avviso, cancellabili.
Ho provato a svuotarla completamente tramite phpmyadmin ma appena riaggiorno tornano tutte le informazioni come prima.
Non so, quindi, se i problemi sono legati o meno. In ogni caso la precedenza è capire come abbassare il numero di200 query.
Nel caso servisse i permalink sono impostati con category/postname e ho necessità di non cambiare questa struttura.
grazie
-
31 Luglio 2010 alle 13:21 #75708wollyAmministratore del forum
Postare tonnellate di codice non richiesto fa si che non si legga nulla.
Se hi 200 query significa che il template è fatto male, senza un link l sito è difficile dire qualcosa.
-
1 Agosto 2010 alle 8:39 #75719dariodnPartecipante
hai ragione. chiedo scusa. pensavo potesse essere utile postare quelle linee in quanto erano linee non scritte da me, ovvero query che io non ho mai scritto.
ad ogni modo, lavorando qui e là ho trovato cosa crea 190 di quelle query.
In functions.php avevo inserito la seguente linea di codice:
add_filter('init', create_function('$a', 'global $wp_rewrite; $wp_rewrite->author_base = "personaggio"; $wp_rewrite->flush_rules();'));
che serve a sostituire "author" con "personaggio" nei permalink. Ora, appurato che tale filtro è disastroso in termini di query, c'è un modo più leggero per poterlo applicare?
grazie.
P.S.
il sito è in localhost per questo non ho potuto dare link
-
1 Agosto 2010 alle 8:52 #75721dariodnPartecipante
al posto del filtro, modificare il file wp_includes/rewrite.php alla riga 399 ca.: $author_base.
ora c’è da capire, però, i numerosi INNER JOIN wp_term_taxonomy perché li fa.
Ho notato che lo fa anche applicando il tema di default di wp.
-
1 Agosto 2010 alle 8:53 #75722SteveAglAmministratore del forum
A naso direi di no.. anche se non capisco perchè dovrebbe generare 190 query…
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.