我有一个拥有超过一百万条记录的数据库。我试图以随机顺序获取记录。数据库中填充了图像链接,每个图像都有唯一的编号。那么我应该能够为图片上的下一个和上一个按钮重新创建相同的“随机”顺序吗?
有没有办法提出查询并将其保存在cookie或会话中并重复使用它来重新生成我的随机订单?
总的来说它是否有效,因为我不希望加载时间变高?
任何建议都很棒。
答案 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,它产生可重复的列值序列。
这意味着,您将能够获得随机订单,但在您的上一页上也会有相同的订单。