php - 选择用于网页的随机记录

标签 php mysql web

大家好,

我拥有一个网站我有一个名为“移动部分”的部分该部分包含许多类别(对象名称+图片+小描述和下载链接) 现在该部分被视为内部部分。我想查看第一页上那个部分的随机记录(我不知道喜欢 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/

相关文章:

php - 带进度条的 CSV 导入

swift - 使用 swift 代码将 Web View 上的 pdf 共享到其他设备

asp.net - Request.Url.Host 与 Request.Headers ["host"相同]?

php - Codeigniter 扩展核心类 'My_Model' 在 unix 上找不到,但在 Windows 中正常?

php - 使用 unix 时间、php、mysql 的时区问题

php - 如何使用 KNPPaginatorBundle 对使用 Doctrine Repository 的结果进行分页?

Python Mysql类调用存储过程

javascript - 如何使第二个下拉值与第一个下拉值相同?

mysql - 将日期格式从 '-' 更改为 '/'

javascript - 转到 Javascript 中的随机页面