Ponieważ możesz przekazać parametr seed do RAND()
funkcji, możesz "stronicować" losowe wyniki, generując ziarno przed pierwszą stroną.
Przykładowy kod:Dla pierwszej strony (w zależności od języka):
int seed = Math.abs(new Random().nextInt());
Zapytanie SQL:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;
Przechowuj ziarno gdzieś (w przypadku aplikacji internetowych możesz użyć parametru adresu URL lub sesji).Dla następnych stron:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;
Uwaga:sortowanie według RAND()
jest ciężką operacją, lepiej byłoby zapisać zaindeksowaną kolumnę z kodem skrótu adresu URL, a następnie użyć funkcji opartych na module lub innych losowych funkcji.