Nous avons une base de 15000 articles pour un trafic de 5000 à 6000 visiteurs uniques environ par jour. Le site est hébergé sur un VDS medium de PHPNet. Et aux heures de pointe le site rame. Le cache est activé à peu prés partout. Coté base de données, j'ai activé la trace des "slow-log". Celle qui revient tout le temps est la suivante (extrait de la log de Mysql) :
# Query_time: 9 Lock_time: 0 Rows_sent: 14275 Rows_examined: 43240
SELECT s.*, t.* FROM xb2460_stories s, xb2460_topics t
WHERE (s.published > 0 AND s.published <= 1226610608) AND
(s.expired = 0 OR s.expired > 1226610608) AND
(s.topicid=t.topic_id) AND s.topicid IN
(325,408,429,143,454,470,453,106,451,443,434,425,458,423,
422,421,420,231,474,158,479,80,468,364,82,415,262,377,445,
281,128,428,427,225,170,111,9,441,94,46,287,265,284,193,
249,303,142,288,189,268,113,174,465,245,118,159,149,91,
462,398,322,216,187,203,153,192,333,309,274,112,246,220,
280,254,210,298,411,290,300,344,119,320,157,54,321,319,
282,259,234,230,229,211,156,121,227,215,166,286,266,345,
77,242,372,253,299,324,329,257,407,406,173,302,370,403,
341,72,338,400,267,264,263,256,222,110,176,351,105,394,
223,183,182,409,178,81,217,212,209,221,397,413,163,431,
430,416,362,359,237,301,342,226,206,205,477,419,418,122,
34,107,480,293,184,378,218,271,208,41,414,5,357,117,314,
124,214,294,473,291,285,87,240,136,132,169,452) AND
s.ihome=0 ORDER BY s.published DESC;
14275 enreg retournés, vous voyez le nombre de catégorie. Je n'ai pas encore trouvé où mais je suppose que c'est l'affichage de la page d'index du module news qui génère cette requête.
Comment peut-on optimiser cette requête et/ou changer le comportement de l'index du module pour faire une plus petite requête ?
Merci pour votre aide car sans solution à cela, nous serons probablement obligé de mettre la clef sous la porte...