Php MySQL选择随机行-rand()性能

Php MySQL选择随机行-rand()性能,php,mysql,Php,Mysql,与其他解决方案相比,ORDER BY rand()性能非常慢,这是真的吗?如果是,从数据库中选择随机行的更好方法是什么 我的问题是: SELECT sName FROM bpoint WHERE placeID=? ORDER BY rand() LIMIT 1; 是的,orderbyrand()在较大的结果集中可能非常慢 一个选项是使用此语句获取resultset(到数组中): 之后-使用array\u rand($resultset)从$resultset查询中获取随机项。这取决于有多少

与其他解决方案相比,
ORDER BY rand()
性能非常慢,这是真的吗?如果是,从数据库中选择随机行的更好方法是什么

我的问题是:

SELECT sName FROM bpoint WHERE placeID=? ORDER BY rand() LIMIT 1; 
是的,
orderbyrand()
在较大的结果集中可能非常慢

一个选项是使用此语句获取resultset(到数组中):


之后-使用
array\u rand($resultset)
$resultset
查询中获取随机项。

这取决于有多少数据。我们谈论的表有多大?这还取决于“随机”的确切含义:您是否要求以相同的概率选择每条记录?或者不需要完全均匀的分布?5-10000行。所需的概率相等。如果您知道索引列包含的值范围为
i
j
,则可以按列限制1对
中的
进行筛选,其中列>=下限(i+RAND()*(j–i))。但如果存在间隙,则无法获得完全均匀的概率分布……因此,php函数数组_rand()的速度更快?@JamaicaBob-这实际上取决于结果集的大小。表B点中有多少行?大约10.000行rows@JamaicaBob-好的,我认为使用阵列会更快,但我不确定。我想你们只需要测试一下,看看有什么不同。实际的查询现在需要多长时间?@BikerJohn-更老的问题,但取决于您的编程语言,php有mt_rand()。我通过对我拥有的行数进行快速计数,然后执行$random=mt_rand(1,$count)以获得范围内的随机整数,然后从'table'中选择*,其中ID=$random;业绩数字大幅上升。仅当您具有唯一ID时才有效(自动增量ftw!)
SELECT sName FROM bpoint WHERE placeID=?;