Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :mélanger un résultat de requête limité ?

Vous pouvez utiliser rand() , mais les performances sont terribles

select * from users order by rand() limit 5; <-- slow

Je suggérerais de stocker la liste de tous les identifiants d'utilisateur dans un tableau de sérialisation et de la mettre en cache dans un fichier disque. (mise à jour périodique)

Ainsi, vous pouvez le désérialiser en utilisant PHP et utiliser PHP array_rand pour choisir 5 utilisateurs au hasard.

Pour récupérer toutes les informations, vous pouvez faire

select * from users where user_id in(...); <-- very fast