很难理解我在标题中的需求。
CodeIgniter 正在一次在 800,000+ 行的表中执行 SELECT 查询。
它需要大量内存,但是在一个特定的服务器中,我收到"内存不足"致命错误。
出于性能目的,我想将选择分为 2 个选择,更具体地说,是 50% 的第一行,然后是剩余的 50%。
我重用这组数据在之后执行插入。
如何在不丢失/忘记任何一行的情况下做到这一点?
除了此类操作与性能问题高度相关之外,您还可以使用unbuffered_row
.
基本上,如果你有一个处理大数据的工作 - 你应该使用
unbuffered_row
提供并集成到构建中 在查询生成器中。它在结果行部分中得到了很好的记录。
例如:
$query = $this->db->select('*')->from('your_table')->get();
while($row = $query->unbuffered_row())
{
//do your job
}
这将避免您的内存问题。