以下哪项是最有效的,为什么?

时间:2018-03-14 18:07:10

标签: laravel performance laravel-5.5 php-7.1 memory-efficient

以下是从订单表

中检索所有订单行的查询
commit('changeColor', newColor)

 $orders = auth()->user()->orders;

 $orders = Order::where('user_id',auth()->id())->get();

如果订单表100 000行,那么上述哪种方法最适合使用?

2 个答案:

答案 0 :(得分:1)

实际上在Laravel中,您可以使用 toSql 方法来比较查询,并查看哪个是最优化的查询,如下所示:

$sql=auth()->user()->orders()->toSql();

但是在上面的例子中,我们通常看到所有这些都是相同的:

//First
"select * from `orders` where `orders`.`user_id` = ? and `orders`.`user_id` is not null"

//Second
"select * from `orders` where `user_id` = ?"

//Third
"select * from `orders` where `user_id` = ?"

正如您所看到的那样,第二个和第三个完全相同,但第一个有一个额外的语句,它更可靠,所以我认为执行时间没有什么不同你就是最好使用第一个。

答案 1 :(得分:1)

与laravel eloquent进行比较DB :: class是从数据库中检索数据的更快方法,但在我们的例子中,我们以结构方式管理应用程序,它取决于您的编码标准和模块管理。

我建议使用:

$sql=auth()->user()->orders()->toSql();