【问题标题】:Code igniter large query results result_array() result代码点燃大查询结果 result_array() 结果
【发布时间】:2012-12-20 17:08:35
【问题描述】:

我在看this

我的查询最多返回 10,000 行并且通常会填满内存

我目前正在做:

$this->db->get()->result_array();

有没有办法不将所有数据加载到内存中并使用某种游标?似乎结果和结果数组都是数组。 (一个是对象数组,另一个是数组数组)

【问题讨论】:

  • 您可以使用Pagination 限制,即$query = $this->db->get('mytable', 10, 20);
  • 我希望不要进行分页,但我想我将来必须为大型查询这样做。
  • 不能只使用limit子句吗?

标签: mysql codeigniter


【解决方案1】:

如果您使用的是我个人推荐的 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

【讨论】:

    【解决方案2】:

    Mysql 偏移量是你要找的指针。 你可以像这样使用它:

        $this->db->get(tableName,10,20);
    

    第二个参数和第三个参数帮助你设置limit和offset。

    Here are more details

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多