Da du kan sende en startparameter til RAND()
funktion, kan du "paginere" de tilfældige resultater ved at generere et frø før den første side.
Eksempelkode:For den første side (varierer efter sprog):
int seed = Math.abs(new Random().nextInt());
SQL-forespørgsel:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;
Gem frøet et sted (for webbaserede applikationer kan du bruge en url-parameter eller en session). For de næste sider:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;
Bemærk:Sortering efter RAND()
er en tung operation, er det måske bedre at gemme en indekseret kolonne med webadressens Hash-kode og derefter bruge en modulbaseret eller andre tilfældige funktioner.