假设我有
$db is an instance of Zend_Db_Adapter_Abstract and
$sql = 'SELECT blah blah FROM table' will return a huge number of records.
有两个代码片段来处理返回的数据,如下所示。
// 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
}
我的理解是 C1 会将所有返回的数据加载到 $results 中。因此,大量数据被加载到 PHP 内存中。以下是我的问题。
- C2 是将所有数据加载到 PHP 内存还是像准备/执行一样一一处理?
- 假设没有其他选择,C1 或 C2 是更好的选择吗?
谢谢!