当我在 codeigniter 中调用行时,我是否在使用限制?
When I call row in codeigniter Am I using limits?
我在一个遗留系统中工作,该系统使用 row() 和 limit() 来获得一个结果。我不明白为什么,因为 row() 已经给了我一个结果,但一位同事说这提高了性能。示例:
$this->db
->select()
->select('extract(epoch from cadevolucao.dt_sistema) as data_sistema')
->select('extract(epoch from cadevolucao.dt_previsao_alta) as data_previsao')
->select('cadevolucao.cd_evolucao, cadevolucao.dt_sistema')
->join('contatnd', 'cadevolucao.num_atend = contatnd.num_atend')
->join('cadplanejamento', 'cadevolucao.cd_evolucao = cadplanejamento.cd_evolucao')
->where('contatnd.cd_pessoa', $cd_pessoa)
->where('tp_evolucao', -1)
->where('tipo', 1)
->order_by('cadevolucao.cd_evolucao','desc')
->limit(3)
->get('cadevolucao')
->row();
我在 CI 文档和 Google 中查找,但没有找到任何有用的信息。
谁能解释一下在 Active Record 的 CI 中使用 row() 时是否需要 limit() 以及为什么?
据我所知row
方法returns 单个结果行。如果您的查询有多行,它 returns 只有第一个 row.But 在内部仍然获取查询获取的所有行并将其存储在数组中。是的,我想我必须同意你的同事的看法,确实限制会对性能产生影响。
这就是 row
方法在内部所做的事情
/**
* Returns a single result row - object version
*
* @param int $n
* @return object
*/
public function row_object($n = 0)
{
$result = $this->result_object();
if (count($result) === 0)
{
return NULL;
}
if ($n !== $this->current_row && isset($result[$n]))
{
$this->current_row = $n;
}
return $result[$this->current_row];
}
因为它要么返回第一个元素,要么返回提供的参数,即行索引。
row
实际上是这个 row_object
的别名
我在一个遗留系统中工作,该系统使用 row() 和 limit() 来获得一个结果。我不明白为什么,因为 row() 已经给了我一个结果,但一位同事说这提高了性能。示例:
$this->db
->select()
->select('extract(epoch from cadevolucao.dt_sistema) as data_sistema')
->select('extract(epoch from cadevolucao.dt_previsao_alta) as data_previsao')
->select('cadevolucao.cd_evolucao, cadevolucao.dt_sistema')
->join('contatnd', 'cadevolucao.num_atend = contatnd.num_atend')
->join('cadplanejamento', 'cadevolucao.cd_evolucao = cadplanejamento.cd_evolucao')
->where('contatnd.cd_pessoa', $cd_pessoa)
->where('tp_evolucao', -1)
->where('tipo', 1)
->order_by('cadevolucao.cd_evolucao','desc')
->limit(3)
->get('cadevolucao')
->row();
我在 CI 文档和 Google 中查找,但没有找到任何有用的信息。
谁能解释一下在 Active Record 的 CI 中使用 row() 时是否需要 limit() 以及为什么?
据我所知row
方法returns 单个结果行。如果您的查询有多行,它 returns 只有第一个 row.But 在内部仍然获取查询获取的所有行并将其存储在数组中。是的,我想我必须同意你的同事的看法,确实限制会对性能产生影响。
这就是 row
方法在内部所做的事情
/**
* Returns a single result row - object version
*
* @param int $n
* @return object
*/
public function row_object($n = 0)
{
$result = $this->result_object();
if (count($result) === 0)
{
return NULL;
}
if ($n !== $this->current_row && isset($result[$n]))
{
$this->current_row = $n;
}
return $result[$this->current_row];
}
因为它要么返回第一个元素,要么返回提供的参数,即行索引。
row
实际上是这个 row_object