我有超过6万条记录,并且我使用Has()通过关系获取记录,但分页速度超过5s,查询速度降低了2s。
$products = Item::has('product_save');
我的查询:
select * from `products` where exists (select * from `product_saves` where `products`.`id` = `product_saves`.`product_id` and `user_id` = 2)
我使用Item执行相同的条件并通过where()进行过滤。就像产品仍然活跃或价格在5到88之间...
有什么方法可以优化它?我在表中添加了索引,但仍然很慢。
答案 0 :(得分:0)
我建议使用Laravel's database query builder代替ORM,并在子查询中选择1代替所有(*)。试试这个:
DB::table('products')
->whereExists(function ($query) {
$query->select(DB::raw(1))
->from('product_saves')
->whereRaw('products.id = product_saves.product_id AND user_id = 2');
})
->get();