Důvodem je řazení podle RAND()
může být pomalé, je to, že nutíte databázi, aby skutečně seřadila celou tabulku, než cokoli vrátí. Pouhé snížení zatížení na skenování jedné tabulky je mnohem rychlejší (i když stále poněkud pomalé).
To znamená, že byste mohli získat část cesty tím, že se vyhnete objednávání:
SELECT *
FROM my_table
WHERE RAND() < 0.1
ORDER BY RAND()
LIMIT 100
Tím se vybere přibližně 1 % všech řádků v tabulce, seřadí je a vrátí prvních 100. Upozorňujeme, že hlavním problémem zde (stejně jako u odpovědi @cmd) je, že si nemůžete být jisti, že dotaz vrátí vůbec nic.
Výše uvedený přístup by měl zahrnovat prohledání celé tabulky (k rozhodnutí, které řádky použít), následované přibližně 1 % řádků. Pokud máte mnoho řádků, můžete procento odpovídajícím způsobem snížit.