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.