现在有个需求要随机从一种百万记录的表中取出15条数据
最简单的做法是order by rand() limit 15,但是这样的效率不是很高。所以找到了下边的这个方法
$ids = array();
$sql = "select id from tableName WHERE addDate = '{$date}' AND status = '1'";
$res = $db->select($sql);
if (!empty($res)) {
foreach ($res as $row) {
array_push($ids, $row['id']);
}
shuffle($ids);
$ids = array_slice($ids, 0, 15);
}
$ids = rtrim(implode(",", $ids), ",");
$sql = "select * from tableName WHERE id in ({$ids})";
$res = $db->select($sql);