Envoyé par
genova
berceker united tu pourrais développer un peu plus l'optimisation du LIMIT + BETWEEN ? Ca m'interesse beaucoup, mais j'ai pas saisi dans l'intégralité le raisonement.
Sinon à la question LIMIT = BETWEEN ? Bien sur que non. LIMIT est appliqué sur le résultat, alors que BETWEEN est un filtre et sert donc à calculer le résultat.
Le problème de BETWEEN, c'est que si par exemple tu as supprimé des entrées, et que tu as des "trous" dans tes ID, il te renverra moins de résultats que prévu, alors que LIMIT renverra les X résultats que tu demandes.
Lorsqu'il y a une requête pouvant retourner plusieurs champs dont les tables possède énormément d'enregistrements, l'utilisation d'un LIMIT peut être catastrophique point de vue performance. Plus le curseur de départ du LIMIT s'éloigne du début des enregistrements plus les performances se dégrade.
Dans ce genre d'opération il faut faire l'opération en deux temps.
Premier temps faire une requête récupérant que l'id avec le LIMIT.
SELECT id FROM forum LIMIT 65412, 10;
Resultat:
id de 125455 ... 125465
Second temps, avec le jeux de resultat avec juste les id vous faite ceci.
SELECT * FROM forum id BETWEEN 125455 AND 125465
ou
SELECT * FROM forum id IN(125455,125456,125457,...,125465)
Pas de problème de trou parce celui sera automatiquement comblé vie le LIMIT qui lui va toujours retourner le même nombre de résultat sauf à la fin.
Partager