sql >> Base de Datos >  >> RDS >> MariaDB

Devolver filas aleatorias de una tabla en MariaDB

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.