MySQL 随机排序的一种优化实现(基于随机抽样的方法)
一般
SELECT * FROM <table_name> ORDER BY RAND() LIMIT 50;
优化
借用随机抽样的方法实现:<expected_count>
为期望取出的数量,<row_count>
为数量总体数量,N
为整数(避免抽样的结果数量少于预期)
WITH a AS (
SELECT id FROM <table_name> WHERE RAND() < (<expected_count> * N)/<row_count>
)
SELECT * FROM <table_name> WHERE id IN (SELECT id FROM a);