Laravel 在從資料庫批次撈取資料時,
常見使用 chunk 與 cursor 。
chunk
在 DB 一次撈取後,分批執行。適合應用在可用記憶體 專案較大、資料庫較小的地方
Order::chunk(100, function ($orders) { foreach ($orders as $order) { // ... } });
select * from orders offset 0 limit 100 select * from orders offset 101 limit 100
cursor
透過 DB 的 cursor 方式撈取資料後,適合應用在可用記憶體 專案較小、資料庫較大的地方
foreach (Order::cursor as $order) { // ... }