0

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

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

任何建议都很棒。

4

2 回答 2

4

最简单的方法是,在数据库中放入另一列,正确索引它,并给它一个随机整数。然后你可以ORDER把你的桌子放在上面,让它稳定。这将使所有用户具有相同但随机的顺序。

编辑:如果您希望每个用户都有自己的序列,这也很简单,正如 Alma Do 所说:

SELECT * FROM records ORDER BY RAND(17)

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

SELECT * FROM records ORDER BY RAND(2308)

但这不会很快。

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

于 2013-11-15T08:17:11.060 回答
1

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

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

这意味着,您将能够有随机顺序,但在您的 prev-next 页面中仍然是相同的顺序。

于 2013-11-15T08:16:11.460 回答