所以我问这个的原因是在我当前的应用程序中withCount()
与仅通过以下方式获取关系的所有数据相比,响应时间几乎增加了三倍with()
并只是从前端获取长度(javascript)。我认为使用的要点withCount()
是为了加快查询速度,但也许我错了?
例如:
courseSession::where('id', '>=', 1)
->where('id', '<=', 320)
->withCount('enrollments')
->get();
平均响应时间约为 900 毫秒(调试栏将其显示为单个数据库调用)
but
courseSession::where('id', '>=', 1)
->where('id', '<=', 320)
->with('enrollments')
->get();
大约 350 毫秒(调试栏将其显示为两个不同的数据库调用)
模型关系定义如下:
public function enrollments()
{
return $this->hasMany(EmployeeEnrollment::class)->where('dropped', '=', null);
}
NOTE:已经检查过,如果我删除 where 子句,它只会加速 30 毫秒
员工登记表大约有 11k 行,我正在运行查询的模型的表大约有 2k 行
这也在本地开发环境中并在两台单独的机器上进行了测试
我对数据库的东西有点一无所知,所以我不确定我是否做错了什么......但对此的任何帮助将不胜感激