嗨,大家好,
我拥有一个网站 我有一个名为“移动部分”的部分,该部分包含许多类别(对象名称 + 图片 + 小描述和下载链接) 现在该部分被视为内部部分。我想查看第一页上该部分的随机记录(我不知道喜欢 RSS,但不知道 Rss)显示对象的名称以及它所属的子类别及其图片(如果可能)。我希望任何人都明白我想说什么。
这是我的网站,这是内部页面的链接,这里检查说移动部分的块它有点乱。是否有任何脚本或技术可以以正确的方式查看它,如果可能,请向我展示示例
我正在使用 php 和 MySQL
提前感谢
无论你做什么,都不要在 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。
这里需要注意的一点是,如果您从表中删除了记录,您将有“漏洞”,您可能会在其中要求不再存在的行。在这种情况下,您可以继续探测直到找到匹配项——它仍然比全表扫描快得多。
这个想法有点像大卫·托马斯·加西亚的抢断。你可以做的是在你的数据库中实现一个字段来跟踪产品的视图(或者你可以避开这个并只跟踪购买),你可以从你的数据库中选择项目作为“畅销产品”或“热销”产品”然后显示在您的网站上。
你真的希望它是随机的吗?很高兴在主页上最受欢迎,并且可能对您的访问者更有用和信息更丰富。
也就是说,在 Microsoft SQL 中编写一个方法来做到这一点真的很容易:
SELECT TOP 1 Name, Picture, Description, Link
FROM Software
WHERE Category = 'Mobile Section'
ORDER BY NEWID()
如果您不使用 Microsoft SQL,这里是一个包含许多数据库的随机选择器的站点。