现在我正在使用ORDER BY Rand();
从表中选择3个随机行,正如在整个网络上指出的那样,这个方法非常慢。我在只有30行的数据库上使用它,并且返回值需要很长时间。我发现的大多数其他解决方案只返回一行。返回多个随机行的最佳方法是什么?
$get_projects_query =
mysql_query(
"SELECT p_id FROM project_data WHERE p_featured='1' ORDER BY Rand() LIMIT 3"
) or die(mysql_error());
while($project_row = mysql_fetch_array($get_projects_query)) {?>
//Do stuff
}
//end three random featured projects loop)
答案 0 :(得分:1)
首先选择表计数。按索引列排序(可能是主键)。然后使用offset =选择限制1到0到表计数范围内的随机整数。
答案 1 :(得分:1)
如果只有30行,您还有其他选择。
选项#1
选项#2
选项#3
答案 2 :(得分:0)
如果您只有30行,为什么不将所有30行下载到您的客户端,然后生成3个随机行索引
答案 3 :(得分:0)
正如其他人所说的那样。查询中只有30个项目是这样的:
或者您的查询目前只有30个结果,但是时间会越来越大?