اذهب إلى المحتوى
  • 0

أيهما أفضل في التنفيذ INNER JOIN أو INNER JOIN (SELECT . FROM)

سعيد يوسف

السؤال

أي من الاستعلامين يعطي نتيجة أفضل في الأداء

INNER JOIN

أو

INNER JOIN (SELECT * FROM)

حسب

-- مثال 1
SELECT p.id, p.Name, o.OrderQty
FROM Products p
INNER JOIN Orders o on p.ProductID = o.ProductID

-- مثال 2
SELECT p.id, p.Name, o.OrderQty
FROM Products p
INNER JOIN (SELECT ProductID, OrderQty FROM Orders) o on p.ProductID = o.ProductID

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

الحالة المعروضة لن تفرق في الأداء كثيرا مهما كبر حجم البيانات وذلك لأن الأمر نفسه صغير. وبشكل عام فأن الأداء يعتمد على عدد الصفوف التي يتم العمل عليها وعدد الأعمدة التي تقوم بأرجاعها وهنا لا فرق بين الأثنين لذا لن تجد فرقا في الأداء.

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

اما اذا كان الإستعلام يحتوى على بعض الحسابات أو التجميعات ( calculations, aggregations) فإن الطريقة الثانية أفضل بالتاكيد، اما هذة الحالة فلا لانه لا توجد حسابات أو تجميعات.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

المثال الأول أفضل من ناحية الأداء , حيث أن في المثال الأول سيتم فلترة الجدول Orders ليتوافق مع الشرط الموضوع بعد كلمة on ومن ثم إختيار العناصر المناسبة

INNER JOIN Orders o on p.ProductID = o.ProductID

بينما في الشرط الثاني سيتم إختيار عناصر الجدول orders كلها أولاً ومن ثم تتم عملية الفلترة , مما يعني إختيار عناصر أكثر وعمليات بحث أكثر

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...