خیلی وقتها کندی عجیب در صفحههایی دیده میشود که لیستها را با روابط Eloquent نمایش میدهند؛ ریشهاش معمولاً مشکل معروف N+1 Query است. خوشبختانه با یک تغییر کوچک در کوئری میشود کلی بهبود گرفت. 🚀
فرض کن هر
Post یک User دارد و موقع لیست پستها، نام نویسنده را هم نمایش میدهی. اگر ساده بنویسی:$posts = Post::all();
foreach ($posts as $post) {
echo $post->user->name;
}
اینجا یک کوئری برای گرفتن همه پستها اجرا میشود و بعد برای هر پست یک کوئری جدا برای گرفتن
user؛ یعنی N+1 کوئری 😬بهجاش از eager loading استفاده کن:
$posts = Post::with('user')->get();
foreach ($posts as $post) {
echo $post->user->name;
}
حالا فقط دو کوئری اجرا میشود: یکی برای پستها، یکی برای همه کاربران مرتبط. هم تمیزتر، هم سریعتر، مخصوصاً روی دیتابیسهای سنگین. 🔥
مرجع: Laravel Docs - Eager Loading
این الگو را در همه لیستها و APIهای پرترافیک پروژه استفاده کن و تاثیرش را در لاگ و پروفایلینگ ببین. 😉
🔖 #Laravel #PHP #لاراول #Laravel #Eloquent #Performance #Eager_Loading #N+1
👤 Developix
💎 Channel: @DevelopixLaravel