Como você pode passar um parâmetro seed para o
RAND()
função, você pode "paginar" os resultados aleatórios gerando uma semente antes da primeira página. Código de exemplo:Para a primeira página (varia de acordo com o idioma):
int seed = Math.abs(new Random().nextInt());
Consulta SQL:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;
Armazene a semente em algum lugar (para aplicativos baseados na web, você pode usar um parâmetro ou sessão de url). Para as próximas páginas:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;
Nota:Classificando por
RAND()
é uma operação pesada, talvez seja melhor armazenar uma coluna indexada com o código hash da url e, em seguida, usar uma função baseada em módulo ou outras funções aleatórias.