ひよこメモ

備忘ブログ Ruby, Rails, AWS, html5, css3, javascript, vim,

Laravelのchunkとcursor DBデータを小分けにして取得

chunk/cursor
大量のデータをgetなど処理する場合に使う。
メモリの使用量を少なくする。

chunk(塊)
一定量ずつ処理

chunk(10, function ($people){
    foreach($people as $person) {
        //処理の実行
    }
}

10件ずつ取得して処理を実行。
10件終わったら次の10件を取得して処理の実行。

Laravel Eloquentで大量のデータを取得する場合 - Qiita


cursor(カーソル)
1クエリずつ処理。

Laravel(Eloquent): chunk() vs cursor() - Qiita

大量のデータを扱う場合、allよりはマシだがメモリの使用量は大きい。