Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改查询的限制,而无需在CodeIgniter中再次执行_Php_Sql_Codeigniter - Fatal编程技术网

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。。。。。在一个巨大的分贝上不应该超过几毫秒。