Vì bạn có thể chuyển một tham số hạt giống cho RAND()
, bạn có thể "phân trang" các kết quả ngẫu nhiên bằng cách tạo một hạt giống trước trang đầu tiên.
Mã mẫu:Đối với trang đầu tiên (thay đổi theo ngôn ngữ):
int seed = Math.abs(new Random().nextInt());
Truy vấn SQL:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200;
Lưu trữ hạt giống ở đâu đó (đối với các ứng dụng dựa trên web, bạn có thể sử dụng tham số url hoặc phiên). Đối với các trang tiếp theo:
SELECT url FROM masterurls ORDER BY RAND({seed}) LIMIT 200 * {pageNumber}, 200;
Lưu ý:Sắp xếp theo RAND()
là một hoạt động nặng, bạn có thể tốt hơn nên lưu trữ một cột được lập chỉ mục bằng Mã băm của url, sau đó sử dụng các chức năng dựa trên mô-đun hoặc các chức năng ngẫu nhiên khác.