Esta es una forma rápida de devolver filas aleatorias de una tabla en MariaDB.
Supongamos que tenemos una tabla llamada Pets
con los siguientes datos:
SELECT
PetId,
PetName
FROM Pets;
Resultado:
+-------+---------+ | PetId | PetName | +-------+---------+ | 1 | Fluffy | | 2 | Fetch | | 3 | Scratch | | 4 | Wag | | 5 | Tweet | | 6 | Fluffy | | 7 | Bark | | 8 | Meow | +-------+---------+
Podemos usar RAND()
función junto con un ORDER BY
cláusula y el LIMIT
palabra clave para devolver filas aleatorias de esa tabla.
Ejemplo:
SELECT
PetId,
PetName
FROM Pets
ORDER BY RAND()
LIMIT 5;
Resultado de ejemplo:
+-------+---------+ | PetId | PetName | +-------+---------+ | 5 | Tweet | | 7 | Bark | | 1 | Fluffy | | 8 | Meow | | 3 | Scratch | +-------+---------+
Y si lo ejecuto de nuevo, obtengo esto:
+-------+---------+ | PetId | PetName | +-------+---------+ | 3 | Scratch | | 8 | Meow | | 4 | Wag | | 7 | Bark | | 6 | Fluffy | +-------+---------+
Y así sucesivamente…
Tenga en cuenta que esto es bastante intensivo y no debe usarse en tablas más grandes.
Al usar esta técnica, MariaDB lee todas las filas de la tabla, genera un valor aleatorio para cada una de ellas, las ordena y finalmente aplica el LIMIT
cláusula. Esto dará como resultado una consulta muy lenta en tablas grandes.
Consulte Muestreo de datos:Técnicas para encontrar de manera eficiente una fila aleatoria en el sitio web de MariaDB para obtener técnicas más adecuadas para tablas más grandes.