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

Muestras aleatorias simples de una base de datos Sql

Creo que la solución más rápida es

select * from table where rand() <= .3

He aquí por qué creo que esto debería hacer el trabajo.

  • Creará un número aleatorio para cada fila. El número está entre 0 y 1
  • Evalúa si mostrar esa fila si el número generado está entre 0 y .3 (30%).

Esto supone que rand() genera números en una distribución uniforme. Es la forma más rápida de hacerlo.

Vi que alguien había recomendado esa solución y fueron derribados sin pruebas... Esto es lo que diría al respecto:

  • Esto es O(n) pero no se requiere clasificación, por lo que es más rápido que O(n lg n)
  • mysql es muy capaz de generar números aleatorios para cada fila. Prueba esto -

    seleccione rand() de INFORMACION_ESQUEMA.TABLAS limite 10;

Dado que la base de datos en cuestión es mySQL, esta es la solución adecuada.