为什么求和大数据不起作用? (Laravel 5.3)
Why sum big data does not work? (Laravel 5.3)
我的代码,你可以在下面看到这个:
public function total()
{
$query = User::limit(100000)->get();
$total = $query->sum('total');
dd($total);
}
dd($total)
的结果不显示或为空
但是当我改变limit(50000)
时,它显示结果
为什么 limit(100000)
不起作用?
注:
在firefox浏览器中,不显示任何内容
在chrome浏览器中,显示错误:
This page isn’t working
myshop.dev is currently unable to handle this request. HTTP ERROR
500
当您调用 get
时,您正在从数据库中获取所有这些记录。然后用 php 执行求和。从数据库中获取那么多记录时,您可能会超时。
为什么不在数据库中求和,然后取结果?
public function total()
{
$total = User::limit(100000)->sum('total');
dd($total);
}
-----编辑-----
当你执行:
$query = User::limit(100000)->get();
$query
变量实际保存的是查询select * from user limit 100000
的结果集。结果集是一个集合(见
collect),那么您将在服务器端执行 sum
,相当于:
$sum = 0;
foreach ($user in $query) {
$sum = $sum + $user->total;
}
最好使用适当的聚合函数在数据库中执行求和。
$total = User::limit(100000)->sum('total');
将转换为:
select SUM(total) from user limit 1000000
如果结果为 0,可能您的列 total
的所有结果集实际上都是 0。
我的代码,你可以在下面看到这个:
public function total()
{
$query = User::limit(100000)->get();
$total = $query->sum('total');
dd($total);
}
dd($total)
的结果不显示或为空
但是当我改变limit(50000)
时,它显示结果
为什么 limit(100000)
不起作用?
注:
在firefox浏览器中,不显示任何内容
在chrome浏览器中,显示错误:
This page isn’t working
myshop.dev is currently unable to handle this request. HTTP ERROR 500
当您调用 get
时,您正在从数据库中获取所有这些记录。然后用 php 执行求和。从数据库中获取那么多记录时,您可能会超时。
为什么不在数据库中求和,然后取结果?
public function total()
{
$total = User::limit(100000)->sum('total');
dd($total);
}
-----编辑-----
当你执行:
$query = User::limit(100000)->get();
$query
变量实际保存的是查询select * from user limit 100000
的结果集。结果集是一个集合(见
collect),那么您将在服务器端执行 sum
,相当于:
$sum = 0;
foreach ($user in $query) {
$sum = $sum + $user->total;
}
最好使用适当的聚合函数在数据库中执行求和。
$total = User::limit(100000)->sum('total');
将转换为:
select SUM(total) from user limit 1000000
如果结果为 0,可能您的列 total
的所有结果集实际上都是 0。