MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Retornar linhas aleatórias de uma tabela no MariaDB


Aqui está uma maneira rápida de retornar linhas aleatórias de uma tabela no MariaDB.

Suponha que tenhamos uma tabela chamada Pets com os seguintes dados:
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 o RAND() função em conjunto com um ORDER BY cláusula e o LIMIT palavra-chave para retornar linhas aleatórias dessa tabela.

Exemplo:
SELECT  
    PetId,
    PetName
FROM Pets 
ORDER BY RAND() 
LIMIT 5;

Exemplo de resultado:
+-------+---------+
| PetId | PetName |
+-------+---------+
|     5 | Tweet   |
|     7 | Bark    |
|     1 | Fluffy  |
|     8 | Meow    |
|     3 | Scratch |
+-------+---------+

E se eu executar novamente, recebo isso:
+-------+---------+
| PetId | PetName |
+-------+---------+
|     3 | Scratch |
|     8 | Meow    |
|     4 | Wag     |
|     7 | Bark    |
|     6 | Fluffy  |
+-------+---------+

E assim por diante…

Tenha em mente que isso é bastante intensivo e não deve ser usado em mesas maiores.

Ao usar essa técnica, o MariaDB lê todas as linhas da tabela, gera um valor aleatório para cada uma delas, ordena-as e finalmente aplica o LIMIT cláusula. Isso resultará em uma consulta muito lenta em tabelas grandes.

Consulte Amostragem de dados:técnicas para encontrar com eficiência uma linha aleatória no site do MariaDB para obter técnicas mais adequadas para tabelas maiores.