分段截取替代 mysql rand() 
                                                    
                        
                    
                    
  
                    
                    需要随机从数据拿去几条数据
select * from  `tb` ORDER BY rand () limit  10非常耗时
所以采用分段获取
$count =  DB::table('tb')->count();
$limit = 10;
$offset = rand(0, $count - $limit);
if ($offset > $count-$limit) {
   $offset = 0;
}
$data=DB::table('tb')->limit($limit)->offset($offset)->get();但是 这样拿取的数据id是分段的 ,是有规律的。
所以数据库表新增一个随机数据字段rand_value,新增的时候给他一个随机数据
查询改成
$data=DB::table('tb')->limit($limit)->orderBy('rand_value')->offset($offset)->get();这样就好了
本作品采用《CC 协议》,转载必须注明作者和本文链接
 
           ncccc1 的个人博客
 ncccc1 的个人博客
         
                     
                     
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号