Php 更改查询的限制,而无需在CodeIgniter中再次执行
是否可以在不再次执行查询的情况下更改查询的限制 这是我的密码:Php 更改查询的限制,而无需在CodeIgniter中再次执行,php,sql,codeigniter,Php,Sql,Codeigniter,是否可以在不再次执行查询的情况下更改查询的限制 这是我的密码: $this->db->select("SQL_CALC_FOUND_ROWS e.emp_no, e.birth_date, e.first_name, e.last_name, e.gender, e.hire_date, t.title, s.salary, d.dept_name", FALSE) ->from('employees AS e') ->jo
$this->db->select("SQL_CALC_FOUND_ROWS e.emp_no, e.birth_date, e.first_name, e.last_name, e.gender, e.hire_date, t.title, s.salary, d.dept_name", FALSE)
->from('employees AS e')
->join('titles AS t', 'e.emp_no = t.emp_no')
->join('salaries AS s', 't.emp_no = s.emp_no')
->join('dept_emp AS de', 's.emp_no = de.emp_no')
->join('departments AS d', 'de.dept_no = d.dept_no')
->join('dept_manager AS dm', 'd.dept_no = dm.dept_no')
->order_by($sort_by, $sort_order)
->group_by('e.emp_no')
->where('t.title', $title)
->limit($limit, $offset);
$ret['rows'] = $q->get()->result();
我使用分页,所以如果我继续加载一个返回大约100000行的查询,它会减慢返回速度
我想通过运行查询一次,然后动态更改限制来加快速度。首先,这与代码点火器或PHP无关。这取决于你的数据库 从那以后,我相信这将取决于质询。如果您有一个没有排序的普通SELECT查询,那么MySQL至少会在达到限制后停止。超出该限制的数据不可用
如果您有一个子查询,并且受外部查询的限制,子查询的结果可能会被缓存,这取决于您的服务器配置和数据的易变性。一开始性能会很差,因为整个查询需要完成,但后续查询可能会更快。该限制不会降低应用程序的速度。SQL\u计算\u找到了\u行。这是一个众所周知的事实,它可以减慢一个查询,我的意思是慢。查看这篇文章,了解基准测试及其工作原理:感谢您的回复,这更有意义。是否有其他方法来计算用于分页的结果总数?因为您的查询中有group by。。。我想你需要一套独特的e.emp\u号衣服。。。因此,您可以使用:选择COUNTDISTINCT e.emp_no。。。。。在一个巨大的分贝上不应该超过几毫秒。