我有一个文章和类别的表格,以及一个数据透视表;我收到了一个类别中的所有相关文章。使用
$category = Category::first();
return $category->articles()->paginate(10); // many to many relationship $this->belongsToMany(Article::class, 'article_category');
它返回正确的文章,但是当一个类别中有超过20000篇文章时,它会很慢。有没有办法让查询更快?
注意:所有表都有索引。
答案 0 :(得分:1)
我已经面对这几次了。
到目前为止,我所知道的唯一解决方案是在COMPLEX QUERY中不要使用ELOQUENT。
您必须更改为DB Query Builder。
我假设您在查询中使用“whereHas”。使用它会减慢你的查询速度。如果您使用它,请使用Join方法更改为DB Query。它会快得多。
唯一的问题是您可以使用已经在模型中声明的关系。您必须手动将其链接回来。
但最近我听说他们已经在5.3中添加了这种关系功能。但我还没看清楚。
希望这可以解决问题。