我得到了这个我想每个月运行的cron工作,它为每个活跃的客户分配随机序列号。
但是需要很长时间才能运行,拥有2000多名活跃客户,每位客户获得10个随机序列,需要20k +更新查询才能完成工作。
我怎样才能加快速度呢?
foreach($subscriptions as $subscription){
$updated_at = Carbon::now()->toDateTimeString();
foreach($games as $game){
DB::table('serials')
->whereNull('user_id')
->where('game_id', $game->game_id)
->limit(1)
->update([
'user_id' => $subscription->user_id,
'updated_at' => $updated_at
]);
}
}
答案 0 :(得分:1)
您可以尝试:
foreach($subscriptions as $subscription){
$updated_at = Carbon::now()->toDateTimeString();
foreach($games as $game){
DB::table('serials')
->whereNull('user_id')
->where('game_id', $game->game_id)
->limit(1)
->updateVeryFast([
'user_id' => $subscription->user_id,
'updated_at' => $updated_at
]);
}
}