Question

C’est assez trivial, mais j’ai remarqué sur SO que, au lieu d’un décalage, ils utilisaient des numéros de page. Je sais que la différence est mineure (multipliez le numéro de page par des lignes sur une page ou divisez le décalage par des lignes sur une page), mais je me demande si l'une est recommandée plutôt que l'autre.

Certains sites, tels que Google, utilisent bien entendu un système plus complexe car ils doivent suivre votre recherche. Mais je pense à un site simple où ce n’est pas grave.

Quelle est la technique recommandée?

Était-ce utile?

La solution

Utilisez des offsets. Si vous choisissez d'autoriser un nombre de résultats variable (ou défini par l'utilisateur) par page, le codage est simple.

Autres conseils

Les décalages sont également utiles pour l'optimisation lorsque le jeu de résultats que vous paginez est très volumineux.

En effet, dans certains cas, cela vous permet de faire une

WHERE my_sortorder >= (some offset)
LIMIT 10

plutôt qu'un

LIMIT 10 OFFSET 880

qui est moins efficace. Un index peut vous permettre d'accéder directement à toutes les lignes correspondant à my_sortoder > = certains décalages , mais lorsque vous utilisez OFFSET avec LIMIT, il doit d'abord rechercher et parcourir les 880 lignes précédentes.

L'utilisation d'une combinaison de limit et de offset est préférable car elle ne nécessite aucun calcul supplémentaire pour déterminer le nouveau numéro de page si vous modifiez votre limite.

Par exemple, avec 20 objets par page, en supposant que la page 1 renvoie les objets d'indice 0 à 19, si vous êtes à la page 2, vous devriez alors rechercher des objets d'indice 20 à 39. Si je décide maintenant de changer Ma limite à 10, le comportement le plus courant serait d'afficher des objets d'indice 20 à 29.

Pour accomplir le comportement ci-dessus, vous devrez recalculer la page sur laquelle vous êtes censé être en utilisant la nouvelle limite. Au-dessus, si vous deviez changer la limite à 10, tout en conservant le numéro de page à 2, vous afficheriez alors les objets d'indice 10 à 19. Vous devrez recalculer le numéro de page à 3, de sorte que les objets 20 - 29 étaient affichés.

Mon avis, bien sûr.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top