sql >> Base de Datos >  >> RDS >> Mysql

MySQL selecciona 10 filas aleatorias de 600K filas rápidamente

Una gran publicación que maneja varios casos, desde simples, hasta espacios, hasta no uniformes con espacios.

http://jan.kneschke.de/projects/mysql/order- por casualidad/

Para el caso más general, así es como lo hace:

SELECT name
  FROM random AS r1 JOIN
       (SELECT CEIL(RAND() *
                     (SELECT MAX(id)
                        FROM random)) AS id)
        AS r2
 WHERE r1.id >= r2.id
 ORDER BY r1.id ASC
 LIMIT 1

Esto supone que la distribución de ids es igual y que puede haber huecos en la lista de ids. Consulte el artículo para ver ejemplos más avanzados