我有一个查询,目前在25k记录的范围内返回,到年底可能会超过100k。显然,这是为了便于阅读.......
在深入研究分页代码之后,标准的Laravel 4.2代码似乎返回整个数据集以获取TOTAL计数,然后对结果集合进行切片以返回分页结果。
我的问题是,任何人都可以强调以下哪些因素不会更有效或确实会导致问题的原因或情况?
\照亮\数据库\锋\ Builder.php 第259行 -
protected function groupedPaginate($paginator, $perPage, $columns)
{
$total_records = \DB::select('select count(*) as total from ('.$this->toSql().') as records', $this->getBindings())[0];
$total = $total_records->total;
$page = $paginator->getCurrentPage($total);
$this->query->forPage($page, $perPage);
return $paginator->make($this->get($columns)->all(), $total, $perPage);
此处的目的是将原始GROUPED SQL查询嵌套在单个选择中,并检索具有总记录数的单个行。获得此总数后,检索一组有限的结果,就像使用标准分页过程一样。
就像我说的那样,任何关于为什么这样做不会更有效或确实失败的建议都会很棒!
为了清楚起见,这是在Laravel 4.2上运行。
答案 0 :(得分:-1)
只要您没有在每页上加载太多记录而导致应用程序变慢,我认为这没有什么害处。