是否可以优化此查询,因为即使表中只有行,显示结果也需要很长时间。
$orders = Order::select(DB::Raw('orders.*, payments.*'))
->leftJoin('payments', function($join) {
$join->on('orders.order_id', '=', 'payments.orderID')
->orwhere('payments.processed', '=', '');
})
->orderBy('order_id', 'asc')
->get();
所以我在这里查询table
order
和tablepayments
。条件必须检查是否存在匹配的'orders.order_id', '=', 'payments.orderID'
。然后在页面上显示结果,并从两个表中选择列。我不知道为什么这项工作如此缓慢,它需要10秒来加载页面和显示只有一个结果。网站的其他部分速度很快,即使它们必须显示更多来自其他表的结果。
最佳答案
这是足够简单的查询,所以没有太大的优化空间。
根据描述判断,尝试使用内部连接而不是左连接。
如果有大量数据,请检查列(order_id,processed)上的必要索引是否已就位。
关于mysql - Laravel中的查询优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39251204/