[spip-dev] Pourquoi tester si l'article est dans le passé ?

On trouve souvent dans Spip des requêtes SQL du genre :

... AND articles.date<NOW() ORDER BY articles.date DESC

Le test articles.date<NOW() ralentit beaucoup car il ne semble pas
utiliser l'index (alors que, si un index est mis sur la date, le tri
- ORDER BY - est ultra-rapide).

Or, ce test est complètement inutile. Si on n'a pas d'article dont la
date soit dans le futur (nos dirigeants prévoient l'avenir, certes,
mais quand même...), le tri suffit.

Puis-je donc virer ce test sans trop casser ?

@ Stephane Bortzmeyer <bortzmeyer@netaktiv.com> :

On trouve souvent dans Spip des requêtes SQL du genre :

... AND articles.date<NOW() ORDER BY articles.date DESC

Le test articles.date<NOW() ralentit beaucoup car il ne semble pas
utiliser l'index (alors que, si un index est mis sur la date, le tri
- ORDER BY - est ultra-rapide).

Or, ce test est complètement inutile. Si on n'a pas d'article dont la
date soit dans le futur (nos dirigeants prévoient l'avenir, certes,
mais quand même...), le tri suffit.

Puis-je donc virer ce test sans trop casser ?

Le mieux serait de n'appliquer ce test que si on demande "pas de publication
des articles post_datés" (ce qui se trouve dans spip_meta : cf
"post_dates").

C'est normalement le cas : as-tu bien choisi la bonne option dans la config
avancée ? (Te bases-tu sur les logs mysql ou sur le code de spip, quand tu
montres cette requête ?)

-- Fil

C'est normalement le cas : as-tu bien choisi la bonne option dans la config
avancée ? (Te bases-tu sur les logs mysql ou sur le code de spip, quand tu
montres cette requête ?)

PS: si effectivement ce test fait ramer, on pourrait cacher l'info dans un
booléen recalculé une fois par jour juste après minuit

-- Fil

a message of 24 lines which said:

Le mieux serait de n'appliquer ce test que si on demande "pas de publication
des articles post_datés" (ce qui se trouve dans spip_meta : cf
"post_dates").

Ah oui, ça marche. Merci.

C'est normalement le cas : as-tu bien choisi la bonne option dans la config
avancée ? (Te bases-tu sur les logs mysql ou sur le code de spip, quand tu
montres cette requête ?)

Sur les journaux de MySQL. J'aurai dû regarder le code de Spip :frowning: