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.