J'ai lu beaucoup de choses sur les inconvénients de l'utilisation de "order by rand", donc je n'ai pas besoin de mise à jour là-dessus. Je pensais, puisque je ne ai besoin d'une quantité limitée de lignes extraites de la db à répartition aléatoire, peut-être que je dois faire:PHP, MySQL - les résultats-array shuffle seraient-ils plus rapides que "select ... order by rand()"?
$r = $db->query("select * from table limit 500");
for($i;$i<500;$i++)
$arr[$i]=mysqli_fetch_assoc($r);
shuffle($arr);
(je sais que ce ne randomizes les 500 premières lignes, que ce soit).
serait-ce plus rapide que
$r = $db->("select * from table order by rand() limit 500");
-moi de mentionner juste, disent les tables db ont été emballés avec plus de ... 10.000 lignes. Pourquoi ne pas le faire vous-même?!?
- Eh bien, j'ai, mais je suis à la recherche de votre opinion expérimentée.
merci!
Voulez-vous randomiser l'ordre des 500 premières lignes, ou renvoyer 500 lignes aléatoires? C'est une distinction importante, et vos deux solutions produiront des résultats différents! – Artelius
Je comprends ce que vous dites, mais de toute façon serait bon pour moi. Je cherche juste le moyen le plus rapide de contourner cela. – Gal
Le moyen le plus rapide est de récupérer 500 lignes * puis de les mélanger.Je crois qu'il est possible de le faire dans SQL (qui serait probablement plus rapide qu'une solution PHP) mais il faudrait une requête différente de celle que vous suggérez. – Artelius