我正在尝试从我的数据库中随机选择文章,其中高评分的文章被选中的机会更高
SELECT * FROM articles WHERE RAND()>0.9 ORDER BY rating DESC LIMIT 3
我的问题是: 它会随机整个表,还是直到找到 3 篇随机数字大于 0.9 的文章为止
最佳答案
如果您有 INDEX( rating)
,则该查询可能会在找到第 3 行之前获取 3 或 4 (3/(1-0.1)) 行。
但这根本不会给你“高评分的文章有更高的机会被选中”。它只是为您提供随机 90% 的最高排名行。
这可能会给你你想要的东西,但需要进行全表扫描:
SELECT *
FROM articles
ORDER BY rating * RAND() DESC
LIMIT 3;
关于Mysql "where rand()"性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31098423/