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

السؤال

نشر

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

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

  • 0
نشر

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

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

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

 

  • 1
نشر

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

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

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...