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);
本文介绍了如何优化MySQL中的随机排序查询,通过使用随机抽样的方法来提高效率。传统方法如`ORDER BY RAND()`在大数据量下性能低下,而优化方案则是先根据期望数量和总行数进行抽样,再查询抽样到的ID,从而减少全表扫描的开销。这种方法尤其适用于需要从大量数据中随机选取少量样本的场景。
632

被折叠的 条评论
为什么被折叠?



