هل لارافيل بطيء؟ تحسين أداء الاستعلامات والفهارس بأمثلة

يوليو 20, 2025

دليل عملي ومفصل مع أمثلة واقعية وعينات كود تسهّل عليك تفادي بطء Laravel وتحافظ على سرعة التطبيق.


1. 🧠 استدعي اللي محتاجه بس

لو بتعمل DB::table('users')->get() هتجيب كل الأعمدة والصفوف، وده بيأثر على الأداء. الحل:

$users = DB::table('users')
    ->select('id', 'name', 'email')
    ->where('status', 'active')
    ->limit(50)
    ->get();
      

ولو بتحب Eloquent:

$users = User::select('id','name','email')
    ->where('status','active')
    ->take(50)
    ->get();
      

ليه؟ بنقلل استهلاك الذاكرة والبيانات المرسلة ونحسن زمن الاستجابة.

2. 🔑 استغل الفهارس صح

لو بتفلتر مثلاً بـ customer_id أو status، لازم تضيف index:

Schema::table('orders', function (Blueprint $table) {
  $table->index('customer_id');
  $table->index(['status', 'created_at']); // فهرس مركّب
});

وبعدين php artisan migrate. ضيف الفهارس اللي فعلاً بتفيد في WHERE أو JOIN أو ORDER BY. ومتاديش أكتر من اللازم عشان التحديثات تبقى بطية.

3. 🛠️ راقِب واستكشف الأداء

في التطوير:

DB::enableQueryLog();
// بعد الاستعلام:
dd(DB::getQueryLog());

جرب أدوات زي Laravel Debugbar و Telescope، واستخدم EXPLAIN عشان تتأكد إن الفهرس بيستخدم:

EXPLAIN SELECT * FROM orders WHERE customer_id = 5;

4. ✅ جدول فحص سريع للتنفيذ

  • اختار الأعمدة اللي بتحتاجها بس باستخدام select().
  • حدد عدد الصفوف بـ limit() أو take().
  • حط فهارس على أعمدة الـ WHERE و JOIN.
  • استعمل Debugbar أو Telescope للفحص.
  • ابعد عن N+1 عن طريق الـ eager loading.

5. ✨ نصايح متقدمة

التحميل المبكّر:

$posts = Post::with('comments')->get();

التعامل مع جداول كبيرة:

Post::chunk(100, function($posts) {
  foreach ($posts as $post) {
    // اعمل اللي محتاجه...
  }
});

كاش للاستعلامات الثقيلة:

$posts = Cache::remember('all_posts', 60, function() {
  return Post::with('comments')->get();
});

استخدم SQL خالص للطلبات المعقدة:

$rows = DB::select('SELECT * FROM orders WHERE status = ?', ['active']);

راقب كل استعلام:

DB::listen(function($query){
  Log::info("SQL: {$query->sql} - Bindings: " . implode(',', $query->bindings) . " - Time: {$query->time}ms");
});

6. 🚀 لتطوير الأداء أكتر

  • شغّل OPcache في PHP.
  • نفّذ php artisan config:cache وroute:cache.
  • اختار كاش سريع زي Redis أو Memcached.
  • فكر في نشر التطبيق على أكثر من سيرفر.
  • راقب الأداء باستمرار وعدّل مبكراً وتكرارياً.

بتركيزك على استعلامات نظيفة، وفهارس ذكية، ومراقبة صحيحة – تطبيق Laravel بتاعك هيفضل سريع وحتى مع نمو البيانات.

المدونة

نظام طوابير Laravel واستخدام Supervisor في الإنتاج

يوليو 01, 2025

🚀 نظام Queue & Jobs في Laravel هناخدك خطوة خطوة من أول إنشاء الجداول لحد ما تشغّل الطوابير في Production عن طريق Supervisor. الخطوة 1: إنشاء...

مقارنة بين Scopes + Traits × UseEloquentBuilder في Laravel

يوليو 13, 2025

في Laravel، بنحتاج دايمًا نكتب استعلامات شبه بعض في أكتر من مكان. Laravel بتوفر طريقتين أساسيين نقدر نستخدمهم علشان نرتّب الاستعلامات دي: Scopes + Tra...

React Labs: View Transitions وActivity

يونيو 17, 2025

React Labs: View Transitions وActivity المنشور اتكتب يوم 23 أبريل 2025 من Ricky Hanlon. في React Labs النهارده بيقدّموا ميزتين تجريبيّتين مودرن...

البرمجة الكائنية (OOP) – المفاهيم الأساسية

أغسطس 09, 2025

البرمجة الكائنية التوجه (Object Oriented Programming - OOP) هي أسلوب حديث في تطوير البرمجيات يُقسّم التطبيق إلى وحدات تسمى كائنات (Objects) تتفاعل م...

إتقان التحقق الشرطي في Laravel 12

يوليو 07, 2025

إتقان التحقق الشرطي في Laravel 12 في Laravel 12، نظام التحقق (validation) قوي جدًا، وميزة التحقق الشرطي بتخليك تتحكم في القوانين بتاعتك ب...

Redux Toolkit 2.9.0 - شرح التحديثات وتحسينات RTK Query بالتفصيل

فبراير 05, 2026

شرح تحديث Redux Toolkit 2.9.0 إصدار Redux Toolkit 2.9.0 ركّز بشكل أساسي على تحسين أداء RTK Query، وتنظيم طريقة التعامل مع الطلبات غير المتزامنة (...