如何优化Laravel查询

时间:2019-02-09 23:19:52

标签: laravel laravel-5 laravel-4 eloquent laravel-5.2

我有超过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之间...

有什么方法可以优化它?我在表中添加了索引,但仍然很慢。

1 个答案:

答案 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();