14

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

我的查询:

SELECT sName FROM bpoint WHERE placeID=? ORDER BY rand() LIMIT 1; 
4

1 回答 1

14

是的,ORDER BY RAND()在较大的结果集中可能会非常慢。

一种选择是使用此语句获取结果集(放入数组中):

SELECT sName FROM bpoint WHERE placeID=?; 

之后 - 用于array_rand($resultset)$resultset查询中获取随机项。

于 2013-04-29T22:37:46.970 回答