选择随机记录以在网页上使用

时间:2009-01-10 16:07:41

标签: php mysql web

HI Guys,

我拥有一个网站我有一个名为“移动部分”的部分,此部分包含许多类别(Nameoftheobject +图片+小描述和下载链接) 现在该部分被视为内部部分。我想在第一页上查看该部分的随机记录(我不知道像RSS但不是Rss) 对象的名称及其所属的子类别及其图片(如果可能)。 我希望任何人都能理解我想说的话。

这是我的网站HERE,这是内部网页HERE的链接,检查说明移动部分的块有点混乱。 是否有任何脚本或技术以适当的方式查看它,如果可能的话,它会向我显示示例

我正在使用php和MySQL

提前完成

3 个答案:

答案 0 :(得分:2)

无论你做什么,都不要在MySQL中使用ORDER BY RAND()。它不会扩展。是的,它似乎适用于少量行,因为数据集很小。 ORDER BY RAND()需要全表扫描,这意味着表越大,查询所需的时间就越长。这将表现为“Gee,网站似乎更慢”......而且速度慢......而且速度慢......

如果你有一个恰好是整数并且作为主键的id列,你可以在查询它之前在PHP中生成最大值,因为你实际上使用的是索引。 / p>

示例可以是:

$random_row_id = rand(1, $max);

然后......

SELECT * FROM foo WHERE id = $random_row_id

你必须弄清楚如何获得$ max,但很可能你只能抓住最后一行的id。

这里需要注意的一点是,如果您从表格中删除了记录,则会有“漏洞”,您可能会要求不再存在的行。在这种情况下,您可以继续探测,直到找到匹配为止 - 它仍然比全表扫描更快。

答案 1 :(得分:0)

这个想法来自大卫托马斯加西亚的抢断。你可以做的是在你的数据库中实现一个跟踪产品视图的字段(或者你可以避开这个并跟踪购买),你可以从数据库中选择“Top Tolers”或“Hot”产品“然后显示在您的网站上。

答案 2 :(得分:-2)

你真的希望它是随机的吗?很高兴在主页上最受欢迎,并且可能会为访问者提供更多有用和信息。

也就是说,在Microsoft SQL中编写一个方法非常容易:

SELECT TOP 1 Name, Picture, Description, Link
FROM Software
WHERE Category = 'Mobile Section'
ORDER BY NEWID()

如果您不使用Microsoft SQL,这里有许多数据库的site with random selectors