Boucles ARTICLES excluant des mots-clés
Je continue à tester en local mon squelette du site audiolingua avec SPIP 3.0.0-alpha1 [18255]. J'avais des boucles qui faisait ramé mysql à fond. Peut-être est-ce du à des boucles d'origine mal optimisées ou à des mauvaises syntaxes utilisées de mon coté...
Ici, pour le voir, il faut au moins exclure 2 mot-clés dans une boucle ARTICLES.
Très mauvaise performance (boucles qui ne posait pas de souci avec spip 1.9 ou 2) :
<BOUCLE_articles_recents(ARTICLES){id_rubrique}{id_mot!=N}{id_mot!=M}{par date}{inverse}>
#TITRE -
</BOUCLE_articles_recents>
Génère :
SELECT articles.date, articles.titre, articles.lang FROM spip
.spip_articles AS articles
INNER JOIN spip
.spip_mots_liens AS L2 ON ( L2.id_objet = articles.id_article AND L2.objet='article') INNER JOIN spip
.spip_mots_liens AS L1 ON ( L1.id_objet = articles.id_article AND L1.objet='article') WHERE (articles.statut = 'publie') AND (articles.id_rubrique = 2) AND NOT((L1.id_mot = 9)) AND NOT((L2.id_mot = 30)) GROUP BY articles.id_article ORDER BY articles.date DESC
Bonnes performances :
<BOUCLE_articles_recents(ARTICLES){id_rubrique}{!id_mot=N}{!id_mot=M}{par date}{inverse}>
#TITRE -
</BOUCLE_articles_recents>
Génère :
SELECT articles.date, articles.titre, articles.lang FROM spip
.spip_articles AS articles
WHERE (articles.statut = 'publie') AND (articles.id_rubrique = 2) AND NOT((articles.id_article IN ( SELECT L1.id_objet AS id FROM spip
.spip_mots_liens AS L1
WHERE (L1.id_mot = 9)))) AND NOT((articles.id_article IN ( SELECT L2.id_objet AS id FROM spip
.spip_mots_liens AS L2
WHERE (L2.id_mot = 30)))) GROUP BY articles.id_article ORDER BY articles.date DESC