Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 以下哪项是最有效的,为什么?_Laravel_Performance_Laravel 5.5_Php 7.1_Memory Efficient - Fatal编程技术网

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

Laravel 以下哪项是最有效的,为什么?,laravel,performance,laravel-5.5,php-7.1,memory-efficient,Laravel,Performance,Laravel 5.5,Php 7.1,Memory Efficient,以下是从orders表中检索所有订单行的查询 $orders = auth()->user()->orders; 或 $orders = Order::where('user_id',auth()->id())->get(); $orders = \DB::table('orders')->where('user_id',Auth::id())->get(); 或 $orders = Order::where('user_id',auth()-&

以下是从orders表中检索所有订单行的查询

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

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

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

如果orders table 100000行,那么上面哪种方法最适合使用?

实际上,在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` = ?"

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

实际上,在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` = ?"

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

与laravel eloquent DB::class相比,从数据库检索数据的速度更快,但在我们的例子中,我们以结构化的方式管理应用程序,其结构取决于您的编码标准和模块管理

我建议使用:

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

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

我建议使用:

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

在我看来,前两个应该是在幕后执行基本相同的事情。第三种方法将跳过将结果转换为雄辩的模型,这将稍微提高性能,但也会降低
$orders
结果的可用性。我会使用#1,因为它是最干净的代码,而且很可能您不需要仔细优化它,除非您先介绍了100个更好的优化。好的,谢谢you@Abhilash.k.p您是在model还是controllerIn controller@karthikt中编写此查询前两个应该是(据我所知)在幕后执行基本相同的事情。第三种方法将跳过将结果转换为雄辩的模型,这将稍微提高性能,但也会降低
$orders
结果的可用性。我会使用#1,因为它是最干净的代码,而且很可能您不需要仔细优化它,除非您先介绍了100个更好的优化。好的,谢谢you@Abhilash.k.p您是在model还是controllerIn controller@karthik中编写此查询