Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Embaralhar um resultado de consulta limitado?


Você pode usar rand() , mas o desempenho é terrível
select * from users order by rand() limit 5; <-- slow

Eu sugeriria armazenar a lista de todos os IDs de usuário em uma matriz de serialização e armazenar em cache em um arquivo de disco. (atualização periódica)

Então, você pode deserializá-lo novamente usando PHP e usar PHP array_rand para escolher 5 usuários aleatórios.

Para buscar as informações completas, você pode fazer
select * from users where user_id in(...); <-- very fast