【发布时间】:2009-11-05 06:28:30
【问题描述】:
我了解到在大型数据库上使用 ORDER BY RAND() 运行 SQL 查询不是一个好主意。
这是我分解代码的尝试。代码需要从数据库中随机选择 10 个 id,然后进行第二次选择以获取随机行。
$sql = "SELECT id FROM table WHERE image != ''
ORDER BY id DESC LIMIT 50;";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
foreach($row as $key => $value)
{
$array[] = $value;
}
}
$rand_keys = array_rand($array, 10);
foreach($rand_keys as $value)
{
$rand_arr[] = $array[$value];
}
$rand_list = implode("," , $rand_arr);
$sql = "SELECT image FROM table
WHERE image != ''
AND id IN ($rand_list)";
$result = mysql_query($sql);
有什么加快或简化的建议吗?
【问题讨论】: