هل لارافيل بطيء؟ تحسين أداء الاستعلامات والفهارس بأمثلة
يوليو 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 بتاعك هيفضل سريع وحتى مع نمو البيانات.
المدونة
يونيو 17, 2025
تحديث Laravel 12.18.0 صدر نسخه Laravel 12.18.0 فيها شوية ميزات جامدة كده: توابع لتشفير وفك تشفير النصوص باستخدام Stringable ديركت في chain strings...
يوليو 07, 2025
إتقان التحقق الشرطي في Laravel 12 في Laravel 12، نظام التحقق (validation) قوي جدًا، وميزة التحقق الشرطي بتخليك تتحكم في القوانين بتاعتك ب...
يوليو 24, 2025
🧠 يعني إيه Dynamic Import؟ الديناميـك إمبورت ببساطة هو إنك تحمّل ملف أو موديول JavaScript "وقت الحاجة بس" مش من أول الصفحة. الميزة دي بتقلل حجم ال...
يوليو 06, 2025
إزاي تستخدم Web Components ببساطة وذكاء كتير من المطورين بيفكروا إن Web Components معمولة عشان تبقى بديل كامل لفريموركات زي React أو Vue. بس الحقيق...
يوليو 06, 2025
📘 شرح تفصيلي لتحديثات ECMAScript 2025 جميع مميزات ECMAScript 2025، مع أمثلة عملية وفهم ليه الميزة دي مهمة لأي مبرمج واجهة أمامية. ١. مجموعات مسما...
يوليو 02, 2025
تجاوز $fillable بأمان باستخدام forceFill() في Laravel جربت تستخدم create() في Laravel ولاقيت إن حقول زي role أو status مش بتتحفظ؟ ده بسبب حماية Larav...