Mysql“rand()”的表现

时间:2015-06-28 09:59:15

标签: mysql performance random

我正在尝试从我的数据库中挑选随机文章,高评级文章有更高的机会被选中

SELECT * FROM articles WHERE RAND()>0.9  ORDER BY rating  DESC LIMIT 3

我的问题是:  它是随机整个表格,还是直到找到3篇随机数高于0.9的文章

1 个答案:

答案 0 :(得分:0)

如果你有INDEX(rating),该查询将可能获取3或4(3 /(1-0.1))行,然后才能找到3。

但这并没有给你"高评价文章有更高的机会被选中"一点都不它只是给你一个90%的排名最高的行。

这可能会给你你想要的东西,但有一个全表扫描:

SELECT *
    FROM articles
    ORDER BY rating * RAND() DESC
    LIMIT 3;