I have a table \"masterurls\" it has morethan 1 million records. I want to fetch random records each time the query executed. It should not have any of the records that were
Since you can pass a seed parameter to the RAND() function, you can "paginate" the random results by generating a seed before the first page.
Sample code: For the first page (varies by language):
int seed = Math.abs(new Random().nextInt());
SQL query:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;
Store the seed somewhere (for web-based applications you can use a url parameter or session). For the next pages:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;
Note: Sorting by RAND() is a heavy operation, you might be better off storing a indexed column with the Hash Code of the url, then using a module-based or other random functions.