php - 大型 SQL 结果集占用太多内存 - CodeIgniter

标签 php mysql sql codeigniter

我正在使用 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/

相关文章:

java - Java 中的 MYSQL 脚本

php - 如何使用 BASH 从 MySQL 数据库中逐行提取数据

php - 使用PHP XPatch在同一foreach循环中从多个域回显文本

php - mysql - 从父表插入id

mysql - 如果重复值,MySql 中的增量字段

解决方案 V2 需要 4 个表的 SQL 查询

sql - 在哪里可以查看 SQL Server 启动/停止日志?

php - CSS无法在Wordpress网站中呈现

php - 如何将其合并到 Eloquent 或 RAW 中的单个查询中?

mysql - 查询获取数据的时间太长