Giả sử tôi cóZend_Db: fetchAll() hoặc truy vấn()/lấy() cho một số lượng lớn các hồ sơ
$db is an instance of Zend_Db_Adapter_Abstract and
$sql = 'SELECT blah blah FROM table' will return a huge number of records.
Có hai mã mảnh vỡ để xử lý các dữ liệu trả về như sau.
// Code fragment 1 (let's call it C1).
$results = $db->fetchAll($sql);
foreach ($results as $row) {
// Process $row
}
// Code fragment 2 (let's call it C2).
$stmt = $db->query($sql);
while ($row = $stmt->fetch()) {
// Process $row
}
Hiểu biết của tôi là C1 sẽ tải tất cả dữ liệu được trả về thành $ kết quả. Vì vậy, một dữ liệu khổng lồ được nạp vào bộ nhớ PHP. Dưới đây là câu hỏi của tôi.
- C2 có tải tất cả dữ liệu vào bộ nhớ PHP hoặc xử lý từng dữ liệu như chuẩn bị/thực thi không?
- Giả sử không có tùy chọn nào khác, C1 hoặc C2 có phải là lựa chọn tốt hơn không?
Cảm ơn!
Cảm ơn bạn đã cảnh báo bạn về việc sử dụng lấy() :) – peidiam