Dado que puede pasar un parámetro semilla a RAND()
función, puede "paginar" los resultados aleatorios generando una semilla antes de la primera página.
Código de muestra:Para la primera página (varía según el idioma):
int seed = Math.abs(new Random().nextInt());
Consulta SQL:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;
Guarde la semilla en algún lugar (para aplicaciones basadas en web puede usar un parámetro de URL o una sesión). Para las siguientes páginas:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;
Nota:Ordenar por RAND()
es una operación pesada, es mejor que almacene una columna indexada con el código hash de la URL y luego use una función basada en módulos u otras funciones aleatorias.