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
已有 3 条评论
添加新评论
- 上一篇: ab压测接口正常返回但报Failed requests的问题
- 下一篇: Laravel打印sql
请教一下,生成的id范围肯定是表ID的最小值、最大值,怎么取这个最小值以及最大值?!!,
最小值 orderBy('id')->first()
最大值 orderBy('id','desc')->first()
wqeqweqw