شرح صفوف ومحتوى الفقرة
يلخّص الجدول المرجعي التالي قائمة المراجعة الهندسية لتحسين استعلامات وفهارس MySQL 8.4 وتحويل الأنماط البطيئة إلى أنماط عالية الأداء:
| مشكلة الأداء الشائعة | النمط البطيء (Anti-Pattern) | النمط المحسّن في MySQL 8.4 | الأثر على خطة EXPLAIN |
|---|---|---|---|
| دالة حول عمود مفهرس | WHERE YEAR(created_at) = 2026 | نطاق Sargable أو فهرس دالي ((YEAR(created_at))) | يتحول من type = ALL إلى range أو ref |
| جلب كافة الأعمدة بلا حاجة | SELECT * FROM orders WHERE ... | تحديد الأعمدة المطلوبة فقط + فهرس مغطٍّ | تظهر Extra: Using index وتختفي قراءات الجدول |
| النجمة البادئة في النصوص | WHERE title LIKE '%mysql%' | بادئة يمنى LIKE 'mysql%' أو فهرس FULLTEXT | يستبدل الفحص الكامل بالبحث الشجري أو المعكوس |
| التحويل الضمني للأنواع | WHERE varchar_phone = 501234567 | تمرير نص مطابق للنوع WHERE varchar_phone = '0501234567' | يمنع تعطيل الفهرس ويحافظ على type = ref |
التصفح العميق بـ OFFSET | LIMIT 20 OFFSET 100000 | التصفح بالمؤشر WHERE id < last_id LIMIT 20 | يفحص 20 صفاً فقط بدلاً من 100,020 صف |
خلاصة المعرفة ومحطة الانتقال
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس كتابة الشروط الصديقة للفهرس (Sargable Predicates)، وإنشاء الفهارس الدالية على التعبيرات في MySQL 8، وتصميم الفهارس المغطية للاستعلام (Covering Indexes)، وتجنب فخ النجمة البادئة والتحويل الضمني للأنواع، وتطبيق التصفح السريع بالمؤشر (Keyset Pagination).
الخطوة التالية والدرس القادم
في الوحدة القادمة ننتقل إلى الكائنات المخزنة (Stored Objects) لنبدأ ببناء الإجراءات المخزنة وتمرير المعاملات والتحكم في مسار التنفيذ داخل خادم MySQL.