【发布时间】:2013-05-31 10:53:31
【问题描述】:
我记得在某处读到,使用 rand() 的顺序是不好的,我刚开始翻页,发现一篇文章证明了这一点。对于大型数据库,按 rand() 排序可能会非常慢,建议的解决方案是在 php 中生成一个随机数并根据它进行选择。问题是我需要验证其他字段才能返回我的记录。我也可能删除了一些旧记录,这也可能导致问题。任何人都可以提供一种体面的方法来从表中选择一些符合某些条件的随机记录(例如字段 paid 必须等于 1 )?
【问题讨论】:
-
如果您使用 php,请使用 'shuffle' 功能。所以得到你的结果,然后在你的程序中随机播放它们。
-
但是如果我返回了 100,000 个结果,我不想获取所有结果
-
@FabianBigler 将大量结果拉入 php 以仅获取少数结果可能比
order by rand() limit N慢得多。 -
而@php_nub_qq 是表MyISAM 或INNODB
-
@Kevin 目前是 MyISAM,但如果我没有其他选择,我可能会考虑转换