Optimizar consultas con Chunk()
Chunk()
Laravel tiene la solución perfecta para esta situación se trata del método chunk(), que nos permite traer resultados de la consulta en bloques para optimizar la carga.
Cambiemos nuestro ejemplo anterior:
Product::chunk(200, function ($products) {
foreach ($products as $product) {
$some_value = ($product->some_field > 0) ? 1 : 0;
$product->update(['some_other_field' => $some_value]);
}
});
En el primer parámetro de la función chunk() estamos definiendo el tamaño del bloque que estaremos usando. En este caso, vamos a cargar 200 resultados, procesarlos, actualizarlo y repetir lo mismo con los próximos 200 así sucesivamente hasta terminar con todos los resultados de la consulta.
Fuente: http://laraveles.com/blog/como-optimizar-el-consumo-de-memoria-en-laravel/