-1
Ich habe diesen Cron-Job, den ich jeden Monat ausführen möchte, die zufällige Seriennummer jedem aktiven Kunden zuweist.Laravel: Wie foreach Datenbankupdate zu beschleunigen
Aber es dauert so lange zu laufen, mit 2000+ aktiven Kunden und jeder Kunde erhält 10 zufällige Serien, dauert es 20k + Update-Abfragen, um den Job zu beenden.
Wie könnte ich das beschleunigen?
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
]);
}
}
Die offensichtliche Sache wäre nicht während jeder Iteration Ihrer Schleifen eine Abfrage auszuführen. Gruppiere die Updates zusammen ... – Devon
Ich kann nicht sehen, wie du jedem Benutzer 10 zufällige Serien gibst. Aus der Abfrage geben Sie jedem Benutzer die Seriennummer für jedes Spiel. – apokryfos