Re: réflexion sur la pagination

Gilles Vincent <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <CA+Q4CmusVWKYWTLL35o7DZGaf8sk1vYgFsJCU8qm9xr48AbhTg@mail.gmail.com>
2016-04-10 13:32 GMT+02:00 Cédric Morin <[email protected]>:

> Je ne comprends pas pourquoi tu parles de pagination dans le sujet et tu
> fournis en exemple une requête de recherche non paginée...
>

Effectivement, c'est dans le plugin Fulltext.
C'est en cherchant les lenteurs liées à l'origine de cette combinaison
ORDER BY + LIMIT, je suis tombé essentiellement sur des exemples de
pagination. Et je ne voyais pas l'intérêt, en dehors de ce type de
situation, de limiter à 500.
Mais ta réponse m'a poussé à regarder dans le plugin Fulltext.
C'est lui qui contient effectivement une borne à 500 fixée par la constance
_FULLTEXT_MAX_RESULTS
Donc s'il y a un truc à voir, c'est pour ce plugin et pas pour le core.
Sorry


> Ici c'est une requête sql de fulltext qui est lente.
> Avec la pagination il n'y a pas de clause LIMIT dans les requêtes, et la
> pagination ne génère pas non plus de JOIN ni et UNION.
>
>
Oui, pour le Union, je me suis planté avec une autre requête.
Mais le JOIN, c'est fulltext. Curieux d'ailleurs qu'il ordonne les 100
éléments de la jointure


> Cela dit je penche de plus en plus souvent pour une navigation de type
> page suivante/page précédente sur les sites public, cela limite un peu les
> cas stressants - mais guère, les bots sont infatigables sur le sujet.
>
> De grâce, jamais jamais jamais de ce fucking chargement infini
> automatique...
>
> Pour revenir au point de départ il fait mettre une recherche par sphinx
> peut être ?
>
>
Je vais mettre Sphinx sur forum.spip.net, ce sera plus efficace je suis
d'accord.


> Et pour la question de fil oui peut être se repérer par un numéro d'ordre
> plutôt que par le nombre d'item ? Cela dit c'est déjà codé dans le
> mécanisme pagination : si tu mets debut_truc=@23 ça t'affiche la page qui a
> l'id=23 il suffit donc juste de changer les urls affichées par le modèle
> pagination, ça doit même pouvoir se personnaliser sur seenthis sans modif
> du core (enfin si seenthis était en SPIP 3...)
>
> Cédric
>
> Le 10 avr. 2016 à 11:54, Gilles Vincent <[email protected]> a
> écrit :
>
> Salut la liste,
>
> le mécanisme de pagination automatique dans SPIP est cool,.. mais loin
> d'être optimal.
> Sur forum.spip.net, il génère des requêtes qui peuvent prendre plus de 2
> secondes !
>
> Voici le type de boucle générée :
> http://spip.pastebin.fr/46321
>
> La requête parcourt prêt de 9 millions de lignes via des tables
> temporaires sans passer par un index.
> Voici le résultat du EXPLAIN :
> http://spip.pastebin.fr/46322
>
> Le problème est lié à plusieurs éléments :
>
> - Une combinaison LIMIT + ORDER BY
> - Un LIMIT important dans des boucles en UNION
> - Un tri sur un champ calculé
>
> Pour résoudre cela, je vois plusieurs approches :
> - revoir la navigation pour avoir moins d'accès directs (voire enlever les
> accès directs et utiliser un chargement progressif)
> - mettre en cache des résultats intermédiaires avant de les trier (pour
> pouvoir les utiliser à plusieurs niveaux de pagination)
>
> Je n'invente rien, je m'inspire d'exposés trouvés sur slideshare :
>
> http://fr.slideshare.net/MarkusWinand/backend-to-frontend-when-database-optimization-affects-the-full-stack
>
> Est-ce que ça vous semble pertinent de travailler sur un tel chantier ?
> Perso, avec un accès aux forums, j'ai un bel espace de travail ;-)
>
> .Gilles
>
> _______________________________________________
> liste: http://listes.rezo.net/mailman/listinfo/spip-dev
> doc: http://www.spip.net/
> dev: http://trac.rezo.net/trac/spip/
> irc://irc.freenode.net/spip
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.