1

嗨,大家好,

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

这是我的网站,这是内部页面的链接,这里检查说移动部分的块它有点乱。是否有任何脚本或技术可以以正确的方式查看它,如果可能,请向我展示示例

我正在使用 php 和 MySQL

提前感谢

4

3 回答 3

2

无论你做什么,都不要在 MySQL 中使用 ORDER BY RAND()。它不会扩展。是的,由于数据集很小,它似乎对少量行工作正常。ORDER BY RAND() 需要全表扫描,这意味着您的表越大,查询所需的时间就越长。这将表现为“哎呀,网站似乎变慢了”......越来越慢......越来越慢......

如果您有一个 id 列恰好是一个整数并充当主键,那么您可以在查询之前在 PHP 中生成最大值,因为您实际上使用的是索引,所以它会快得多。

示例可能类似于:

$random_row_id = rand(1, $max);

接着...

SELECT * FROM foo WHERE id = $random_row_id

您必须弄清楚如何获得 $max,但很可能您只能获取最后一行 id。

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

于 2009-01-10T21:27:29.817 回答
0

这个想法有点像大卫·托马斯·加西亚的抢断。你可以做的是在你的数据库中实现一个字段来跟踪产品的视图(或者你可以避开这个并只跟踪购买),你可以从你的数据库中选择项目作为“畅销产品”或“热销”产品”然后显示在您的网站上。

于 2009-01-10T18:43:53.173 回答
-2

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

也就是说,在 Microsoft SQL 中编写一个方法来做到这一点真的很容易:

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

如果您不使用 Microsoft SQL,这里是一个包含许多数据库的随机选择器的站点。

于 2009-01-10T16:25:49.457 回答