好的,所以我有一个网络系统(基于 codeigniter 并在 mysql 上运行),它允许人们通过在一系列表单中进行选择来查询邮政地址数据的数据库,直到他们到达想要的选择,非常标准的东西. 然后他们可以购买该信息并通过该系统下载。
查询运行得非常快,但是在将查询应用到数据库并将其导出到 csv 时,一旦数据集达到 30,000 条记录标记(每行大约有 40 列,其中大约 20 列全部填充每个单元格平均 20 个字符的数据)导出到 csv 可能需要 5 分钟左右。
所以,我的问题是,缓慢的主要原因是什么?是不是查询的数据结果集太大了,以至于遇到了内存问题?因此,我应该为该过程留出更多内存吗?或者,有没有更有效的方法从我没有做的 mysql 查询导出到 csv?我应该将查询的内容保存到临时表并简单地将临时表导出到 csv 吗?还是我要解决这一切都错了?此外,由于它存储结果集的方式,我正在使用 Codeigniters Active Record 进行这种禁止吗?
伪代码:
$query = $this->db->select('field1, field2, field3')->where_in('field1',$values_array)->get('tablename');
$data = $this->dbutil->csv_from_result($download_query, $delimiter, $newline); // the some code to save the file
$this->load->helper('download');
force_download($filename, $filedata);
欢迎任何建议!感谢您的阅读!