我正在看这个。
我的查询最多返回 10,000 行并且通常会填满内存
我目前正在做:
$this->db->get()->result_array();
有没有办法不将所有数据加载到内存中并使用某种游标?似乎结果和结果数组都是数组。(一个是对象数组,另一个是数组数组)
我正在看这个。
我的查询最多返回 10,000 行并且通常会填满内存
我目前正在做:
$this->db->get()->result_array();
有没有办法不将所有数据加载到内存中并使用某种游标?似乎结果和结果数组都是数组。(一个是对象数组,另一个是数组数组)
如果您使用的是我个人推荐的 Active Record,那么limit()
应该可以实现您的目标。
$this->db->limit();
也可以这样使用,稍微容易一些,代码行数也少:
$query = $this->db->get('Table_Name', 50); //syntax db->get('Table',limit_val);
return $query->result();
也可以返回一个带偏移量的限制:
$this->db->limit(10, 20); // Second parameter lets you set a result offset
有关 Active Record Query 的更多帮助的链接 https://www.codeigniter.com/userguide2/database/active_record.html#select
Mysql 偏移量是您要查找的指针。你可以像这样使用它:
$this->db->get(tableName,10,20);
第二个参数和第三个参数帮助您设置 limit 和 offset 。