النتائج 1 إلى 3 من 3
الموضوع:

ما هو Query Optimization ولماذا بعض الاستعلامات بطيئة جدًا؟

الزوار من محركات البحث: 14 المشاهدات : 136 الردود: 2
جميع روابطنا، مشاركاتنا، صورنا متاحة للزوار دون الحاجة إلى التسجيل ، الابلاغ عن انتهاك - Report a violation
  1. #1
    من أهل الدار
    مطورة برمجيات
    تاريخ التسجيل: February-2026
    الدولة: سوريا
    الجنس: أنثى
    المشاركات: 1,230 المواضيع: 54
    التقييم: 1358
    مزاجي: الحمدلله
    المهنة: مهتمة بالذكاء الاصطناعي
    أكلتي المفضلة: كبة باللبن
    آخر نشاط: منذ 10 ساعات

    ما هو Query Optimization ولماذا بعض الاستعلامات بطيئة جدًا؟ إضغط على مفتاح Ctrl+S لحفظ الصفحة على حاسوبك أو شاهد هذا الموضوع

    أحد أكثر الأسئلة شيوعًا في عالم قواعد البيانات هو:
    لماذا يكون الاستعلام بطيئًا رغم أن البيانات منظمة؟

    كثير من المبتدئين يعتقدون أن كتابة استعلام صحيح نحويًا (Syntax) يعني أنه جيد، لكن في الواقع هناك فرق كبير بين:

    استعلام يعمل ✔️
    واستعلام يعمل بكفاءة ⚡

    وهنا يأتي مفهوم Query Optimization.




    أولًا: ماذا يحدث عندما نكتب استعلام SELECT؟

    SELECT * FROM users WHERE email = 'test@example.com';

    قاعدة البيانات لا تنفذه مباشرة، بل تمر بعدة مراحل:
    1. Parsing – تحليل الاستعلام.
    2. Planning – إنشاء خطة تنفيذ (Execution Plan).
    3. Optimization – اختيار أفضل طريقة للتنفيذ.
    4. Execution – تنفيذ الخطة.




    المرحلة الأهم هنا هي اختيار خطة التنفيذ المناسبة.




    ثانيًا: ما هو Execution Plan؟


    هو الخطة التي تقرر قاعدة البيانات من خلالها:
    • هل ستستخدم Index؟
    • هل ستعمل Full Table Scan؟
    • بأي ترتيب ستنفذ الـ JOIN؟
    • هل ستستخدم Nested Loop أم Hash Join؟




    يمكن عرض الخطة باستخدام:
    EXPLAIN SELECT ...

    وهذه أداة مهمة جدًا لأي مطور يريد تحسين الأداء.




    ثالثًا: ما هو Full Table Scan ولماذا هو خطير؟


    عند عدم وجود فهرس مناسب، تضطر قاعدة البيانات للمرور على كل صف في الجدول للعثور على النتيجة.

    في جدول يحتوي على:
    • 1000 سجل → قد لا تشعر بالبطء
    • 1,000,000 سجل → سيصبح الاستعلام بطيئًا جدًا




    وهذا أحد أكثر أسباب بطء الأنظمة.




    رابعًا: دور الفهارس (Indexes) في تحسين الاستعلام


    الفهرس يعمل مثل فهرس الكتاب.
    بدلًا من قراءة كل الصفحات، يتم الانتقال مباشرة للمعلومة المطلوبة

    CREATE INDEX idx_email ON users(email);

    الآن البحث عن email سيصبح أسرع بكثير.

    لكن يجب الانتباه:
    • الفهارس تسرّع القراءة.
    • لكنها تبطئ الإدخال والتحديث.
    • وتستهلك مساحة تخزين إضافية.







    خامسًا: ترتيب الـ JOIN يؤثر على الأداء

    SELECT *
    FROM orders
    JOIN users ON orders.user_id = users.id;

    لو كان جدول users يحتوي مليون سجل
    وجدول orders يحتوي 10,000 سجل

    يجب أن تبدأ قاعدة البيانات بالجدول الأصغر غالبًا.
    الـ Optimizer يحاول اختيار الأفضل، لكن أحيانًا يحتاج تدخل المطور.




    سادسًا: إعادة كتابة الاستعلام قد تحسن الأداء


    مثال سيء
    SELECT * FROM users WHERE YEAR(created_at) = 2024;

    هذا يمنع استخدام الفهرس.

    الأفضل
    SELECT * FROM users
    WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';



    سابعًا: استخدام LIMIT و Pagination


    بدل
    SELECT * FROM products;

    الافضل
    SELECT * FROM products LIMIT 20 OFFSET 0;

    هذا يقلل تحميل البيانات ويحسن الأداء في التطبيقات.




    ثامنًا: أسباب شائعة لبطء الاستعلامات

    1. عدم وجود فهرس.
    2. استخدام SELECT * بدون حاجة.
    3. وجود JOIN على جداول ضخمة بدون شروط واضحة.
    4. استخدام دوال على أعمدة مفهرسة.
    5. كثرة الاستعلامات المتكررة بدل استخدام Cache.







    تاسعًا: هل قاعدة البيانات دائمًا تختار الخطة الأفضل؟


    غالبًا نعم، لكن:
    • إذا كانت الإحصائيات غير محدثة
    • أو الفهارس غير مناسبة
    • أو البيانات تغيرت بشكل كبير




    قد تختار خطة غير مثالية.

    ولهذا يجب على المطور فهم ما يحدث داخليًا وعدم الاعتماد الأعمى على النظام.




    خلاصة


    تحسين الاستعلامات ليس مجرد كتابة أوامر صحيحة، بل هو فهم عميق لكيفية تنفيذ قاعدة البيانات لها.
    كل استعلام يمر بخطة تنفيذ، وكل قرار — مثل إنشاء فهرس أو إعادة كتابة شرط — قد يحدث فرقًا كبيرًا في الأداء.

    المطور الجيد لا يسأل:

    هل يعمل الاستعلام؟

    بل يسأل:

    هل يعمل بأفضل أداء ممكن؟

  2. #2
    من أهل الدار
    تاريخ التسجيل: July-2021
    الدولة: جمهورية الانبار
    الجنس: ذكر
    المشاركات: 7,037 المواضيع: 280
    صوتيات: 5 سوالف عراقية: 0
    التقييم: 9592
    مزاجي: عال العال
    أكلتي المفضلة: سمج
    موبايلي: سامسووووونج
    آخر نشاط: منذ 10 ساعات

  3. #3
    من أهل الدار
    مطورة برمجيات
    اقتباس المشاركة الأصلية كتبت بواسطة مجيدخلف غضيب مشاهدة المشاركة
    شكرا لك

تم تطوير موقع درر العراق بواسطة Samer

قوانين المنتديات العامة

Google+

متصفح Chrome هو الأفضل لتصفح الانترنت في الجوال