HI Guys,
我拥有一个网站我有一个名为“移动部分”的部分,此部分包含许多类别(Nameoftheobject +图片+小描述和下载链接) 现在该部分被视为内部部分。我想在第一页上查看该部分的随机记录(我不知道像RSS但不是Rss) 对象的名称及其所属的子类别及其图片(如果可能)。 我希望任何人都能理解我想说的话。
这是我的网站HERE,这是内部网页HERE的链接,检查说明移动部分的块有点混乱。 是否有任何脚本或技术以适当的方式查看它,如果可能的话,它会向我显示示例
我正在使用php和MySQL
提前完成
答案 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。