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.