Hier is een snelle manier om willekeurige rijen uit een tabel in MariaDB te retourneren.
Stel dat we een tabel hebben met de naam Pets
met de volgende gegevens:
SELECT
PetId,
PetName
FROM Pets;
Resultaat:
+-------+---------+ | PetId | PetName | +-------+---------+ | 1 | Fluffy | | 2 | Fetch | | 3 | Scratch | | 4 | Wag | | 5 | Tweet | | 6 | Fluffy | | 7 | Bark | | 8 | Meow | +-------+---------+
We kunnen de RAND()
. gebruiken functie in combinatie met een ORDER BY
clausule en de LIMIT
trefwoord om willekeurige rijen uit die tabel te retourneren.
Voorbeeld:
SELECT
PetId,
PetName
FROM Pets
ORDER BY RAND()
LIMIT 5;
Voorbeeld resultaat:
+-------+---------+ | PetId | PetName | +-------+---------+ | 5 | Tweet | | 7 | Bark | | 1 | Fluffy | | 8 | Meow | | 3 | Scratch | +-------+---------+
En als ik het opnieuw doe, krijg ik dit:
+-------+---------+ | PetId | PetName | +-------+---------+ | 3 | Scratch | | 8 | Meow | | 4 | Wag | | 7 | Bark | | 6 | Fluffy | +-------+---------+
En zo verder...
Houd er rekening mee dat dit behoorlijk intensief is en niet op grotere tafels mag worden gebruikt.
Bij gebruik van deze techniek leest MariaDB alle rijen in de tabel, genereert een willekeurige waarde voor elk van hen, ordent ze en past ten slotte de LIMIT
toe clausule. Dit zal resulteren in een zeer trage zoekopdracht op grote tabellen.
Zie Data Sampling:technieken voor het efficiënt vinden van een willekeurige rij op de MariaDB-website voor technieken die meer geschikt zijn voor grotere tabellen.