Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:mescolare un risultato di query limitato?

Puoi usare rand() , ma la performance è terribile

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

Suggerirei di archiviare l'elenco di tutti gli ID utente in un array serializzato e memorizzarlo nella cache in un file disco. (aggiornamento periodico)

Quindi, puoi annullare la serializzazione utilizzando PHP e utilizzare PHP array_rand per scegliere 5 utenti casuali.

Per recuperare le informazioni complete, puoi farlo

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