重新生成“随机”MySQL查询

时间:2013-11-15 08:13:28

标签: php mysql sql random

我有一个拥有超过一百万条记录的数据库。我试图以随机顺序获取记录。数据库中填充了图像链接,每个图像都有唯一的编号。那么我应该能够为图片上的下一个和上一个按钮重新创建相同的“随机”顺序吗?

有没有办法提出查询并将其保存在cookie或会话中并重复使用它来重新生成我的随机订单?
总的来说它是否有效,因为我不希望加载时间变高?

任何建议都很棒。

2 个答案:

答案 0 :(得分:4)

最简单的方法是,在数据库中放入另一列,正确索引,并给它一个随机整数。那么你可以ORDER你的表,并保持稳定。这将使所有用户具有相同但随机的序列。

编辑:如果你想让每个用户拥有自己的序列,这也很简单,就像Alma Do所说:

SELECT * FROM records ORDER BY RAND(17)

将始终具有相同的排序(只要您不更改数据库),并且与

不同
SELECT * FROM records ORDER BY RAND(2308)

但它不会很快。

我能想到的唯一选择是使用大量空间:为用户计算序列时,将其存储在表格中。这将需要每个用户有两百万行的两列表。

答案 1 :(得分:1)

根据MySQL手册页,您可以为RAND()函数指定参数,因此它将返回随机但可重复的序列:

  

如果指定了常量整数参数N,则将其用作种子   value,它产生可重复的列值序列。

这意味着,您将能够获得随机订单,但在您的上一页上也会有相同的订单。