当我尝试使用分页连接查询选择某个字段时,它会显示错误,如
Allowed memory size of 134217728 bytes exhausted (tried to allocate 45797376 bytes)
我的查询是
$price_all = DB::table('model_price')
->join('operator_model','model_price.model_id','=','operator_model.id')
->join('operator_route','operator_model.operator_route_id','=','operator_route.id')
->join('route', 'operator_route.route_id', '=', 'route.id')
->join('operator', 'operator_route.operator_id', '=', 'operator.id')
->select('model_price.id', 'model_price.price', 'route.route_name', 'operator.operator_name')
->paginate(2);
在我的数据库中,只存储了5条记录。这不是大数据。
当我尝试没有分页时,它工作正常。像
$price_all = DB::table('model_price')
->join('operator_model','model_price.model_id','=','operator_model.id')
->join('operator_route','operator_model.operator_route_id','=','operator_route.id')
->join('route', 'operator_route.route_id', '=', 'route.id')
->join('operator', 'operator_route.operator_id', '=', 'operator.id')
->select('model_price.id', 'model_price.price', 'route.route_name', 'operator.operator_name')
->get();
现在我该如何优化此查询。
答案 0 :(得分:0)
尝试使用Offset&限制而不是分页。
$price_all = DB::table('model_price')
->join('operator_model','model_price.model_id','=','operator_model.id')
->join('operator_route','operator_model.operator_route_id','=','operator_route.id')
->join('route', 'operator_route.route_id', '=', 'route.id')
->join('operator', 'operator_route.operator_id', '=', 'operator.id')
->select('model_price.id', 'model_price.price', 'route.route_name', 'operator.operator_name')
->skip(0)
->take(2)
->get();