Laravel 拉维尔·帕吉纳特太慢了

Laravel 拉维尔·帕吉纳特太慢了,laravel,laravel-5,eloquent,laravel-5.2,laravel-5.1,Laravel,Laravel 5,Eloquent,Laravel 5.2,Laravel 5.1,我有一个分页问题,在超过25000行的大数据中,分页速度非常慢 我尝试使用以下方法获取用户在数据库中保存的产品: $products = Item::has('product_save'); 我加上同样的条件 $products = $products->where('active', 0); 我使用这一行来分页: $products = $products->paginate(20); all查询需要0.06865秒。 但是速度太慢了,超过了4.9秒! 我怎样才能使它很快 您

我有一个分页问题,在超过25000行的大数据中,分页速度非常慢 我尝试使用以下方法获取用户在数据库中保存的产品:

$products = Item::has('product_save');
我加上同样的条件

$products = $products->where('active', 0);
我使用这一行来分页:

$products = $products->paginate(20);
all查询需要0.06865秒。 但是速度太慢了,超过了4.9秒!
我怎样才能使它很快

您询问了“如何执行此操作?从产品中选择p.*作为p,产品保存为s,其中s.user\u id=4,p.id=s.product\u id”在注释中。答复如下:

Item::with('product_saves')->whereHas('product_saves', function($q){ 
    $q->where('user_id', 4)
});

和p.id=s.product\u id
应定义为product\u保存的关系,否则应为此建立自定义关系。这将立即加载查询,并将您的项目限制为仅具有product\u saves关系的项目,并确保product\u saves关系的用户id为4。

仅选择重要字段而不是全部,可能会加快查询执行时间您是否可以检查生成的查询并在此处发布?这使得分析问题变得更容易。@SaurabhMistry我没有太多字段,只有16个字段,我使用它时没有关系faster@Jerodev怎么能从能言善辩的laravel那里得到呢?问题在于分页库,但是当我使用paginate时,第一个查询在0.0012199878692627 S内运行时速度会非常慢,分页时间为5.9855120182037。总执行时间:0.001230001449585总执行时间:2.4422662258148这太疯狂了。分页不应该使查询速度减慢那么多。您是否尝试过使用skip()和take()来模拟分页,看看这是否有帮助?