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