大家好,
我拥有一个网站我有一个名为“移动部分”的部分该部分包含许多类别(对象名称+图片+小描述和下载链接) 现在该部分被视为内部部分。我想查看第一页上那个部分的随机记录(我不知道喜欢 RSS 但不是 Rss)显示 对象的名称及其所属的子类别及其图片(如果可能)。 我希望任何人都能理解我想说的话。
这是我的网站HERE这是内部页面的链接 HERE检查说移动部分有点乱的 block 。 是否有任何脚本或技术可以以正确的方式查看它,如果可能的话给我看例子
我正在使用 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。
这里需要注意的是,如果您从表中删除了记录,就会出现“漏洞”,您可能会在其中请求不再存在的行。在这种情况下,您可以继续探索直到找到匹配项——它仍然比全表扫描快得多。
关于php - 选择用于网页的随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/431208/