我正在使用 CodeIgniter 发出 SQL 查询,它可以返回超过 80,000 行的结果。每行有三列,都是整数,我收到一个 PHP 错误: fatal error :允许的 134217728 字节内存大小已耗尽
看来我正在尝试使用超过 128MB 从 MySQL 服务器检索结果。我正在使用 $query->result_array() 来检索结果。在我得到的结果中,空间方面显然存在严重的开销。假设我检索了 100,000 行,其中包含 3 个整数。所以 100,000*((3*4 + 10)= 2.1MB。(10 是用于列 ID 等的字节数)。
我做错了什么吗?
--------------------已解决--------------------
通过修改CodeIgniter代码解决:link .
现在执行速度更快,脚本仅占用约 3MB 的内存,而不是超过 128MB。
最佳答案
我不确定 CI 返回结果的确切方式,但您绝对不希望整个数据集在一个数组中。为什么不根据需要遍历每一行?
<?php
$result = $this->db->query('SELECT ...');
while($row = $result->next_row())
{
// do something with that single row
}
关于php - 大型 SQL 结果集占用太多内存 - CodeIgniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811859/