使用太多内存的CodeIgniter MySQL查询 - 如何使用MySQL的SSCursor?

时间:2011-10-20 22:54:59

标签: php mysql codeigniter memory-management

我正在使用CodeIgniter进行数据库访问的应用程序。该应用程序会发出以下查询:$this->db->query("SELECT fields_list FROM table_name"); 但该表有数十万条记录。

CodeIgniter尝试将整个结果集加载到内存中,导致脚本达到内存限制。

解决这个问题的方法是使用libmysqlclient API的SSCursor,但我看不到任何使用SSCursor的CodeIgniter示例。有没有办法在CodeIgniter中使用MySQL的SSCursor?

1 个答案:

答案 0 :(得分:0)

执行for循环并限制在单个查询中检索的记录数。

获取表格中的总记录数。然后做一个:

for ($i=0; $i<=COUNT_OF_RECORDS; $i+=1000) {
     $sql = "SELECT fields_list FROM table_name LIMIT $i,1000";
}