【Laravel】批次撈取資料庫資料:chunk 與 cursor 比較

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) {
    // ...
}