Mysql "where rand()"性能

标签 mysql performance random

我正在尝试从我的数据库中随机选择文章,其中高评分的文章被选中的机会更高

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/

相关文章:

mysql - 获取计数的平均数

python - cProfile 在调用 numba jit 函数时会增加大量开销

c - 如何使用函数指针运行随机函数

c++ - 生成随机分布的更有效方法?

MySQL:哈希索引与表连接

python - Django 拒绝删除 PostgreSQL 数据库 [另一个使用该数据库的 session ]

mysql - 为什么没有聚合的结尾 Group By 会减慢我的查询速度?

python - Pandas :一旦一列达到另一列的某个值,如何返回行值?

javascript - 如何提高 nodejs/socket io 性能?

c# - 为什么C#的随机下限是包含的,而上限是独占的?