Actualités
Obtenir des lignes aléatoires dans une table MySQL est un excercice assez paradoxal : les tables SQL sont prévues pour trier et analyser, mais pas pour prendre au hasard.
C'est comme cela que l'on finit avec la fameuse clause ORDER BY RAND(), qui trie... dans le désordre. C'est une bonne solution, jusqu'à quelques dizaines de milliers de lignes : mais les performances se dégradent rapidement.
Jan Kneschke propose une autre solution pour aller cherche un identifiant unique dans une table, sans faire de tri sur une colonne inconnue. Une sous-requête et une jointure accélère considérablement le travail.
C'est comme cela que l'on finit avec la fameuse clause ORDER BY RAND(), qui trie... dans le désordre. C'est une bonne solution, jusqu'à quelques dizaines de milliers de lignes : mais les performances se dégradent rapidement.
Jan Kneschke propose une autre solution pour aller cherche un identifiant unique dans une table, sans faire de tri sur une colonne inconnue. Une sous-requête et une jointure accélère considérablement le travail.
ORDER BY RAND() (197 visites)
Commentaires
Vous pouvez ajouter votre commentaire! |
Vous devez vous connecter pour commenter


