ORDER BY RAND()替代品

7年前关闭。

MySQL:ORDER BY

RAND()的替代方法

我目前有一个查询,最终ORDER BY RAND(HOUR(NOW())) LIMIT 40得到40个随机结果。结果列表每小时更改一次。

这会杀死查询缓存,这会损害性能。

时间变化 ?它不必是 每个 小时,也不必是完全随机的。

我宁愿选择一个随机结果,也不愿对表中的任意字段进行排序,但我会作为最后的选择…

(这是我不时地需要洗牌的新产品清单)。

回答:

我认为更好的方法是将产品标识符下载到中间层,在需要时(每小时一次或每个请求一次)随机选择40个值,然后在查询中使用它们:product_id in

(@id_1, @id_2, ..., @id_40)

以上是 ORDER BY RAND()替代品 的全部内容, 来源链接: utcz.com/qa/397227.html

回到顶部