LOADING

inRandomOrder高性能优化

当数据库表中数据过3w之后inRandomOrder用起来就十分的慢还占用内存,现数据50w.
explan之后发现查询速度为0.32

解决方案

        $rand_arr = [];
        for ($i=0;$i<100;$i++){
            $rand_arr[] = mt_rand(500,10000);
        }
 $link_popular_record_false = Student::whereNotIn('id',$temp_link_popular)
                    ->whereIn('id',$rand_arr)
                    ->limit($limit-$link_count)
//                    ->inRandomOrder()
                    ->get();

用whereIn进行主键筛选就可以了 修改后查询效率为0.0026

标签: Laravel

已有 3 条评论

  1. 啊生

    请教一下,生成的id范围肯定是表ID的最小值、最大值,怎么取这个最小值以及最大值?!!,

    1. 王思彤

      最小值 orderBy('id')->first()
      最大值 orderBy('id','desc')->first()

  2. wqeqw

    wqeqweqw

添加新评论