Posible duplicado:
Muestras aleatorias simples de una database (My) Sql
¡Hola!
Digamos que tengo una tabla de usuarios. Quiero una consulta que mezcle el resultado y solo muestre 5 usuarios. ¿Cómo hago eso en la consulta de MySQL sin usar ningún php?
Puedes usar rand()
, pero el performance es terrible
select * from users order by rand() limit 5; <-- slow
Sugeriría, almacene la list de todas las identificaciones de usuario en una matriz de serialization y la memory caching en un file de disco. (actualización periódica)
Entonces, puedes volver a serializarlo usando PHP, y usar PHP array_rand
para seleccionar 5 usuarios aleatorios.
Para search la información completa, puede hacer
select * from users where user_id in(...); <-- very fast
SELECT user FROM users ORDER BY RAND() LIMIT 5