سعيد يوسف نشر 15 أكتوبر 2021 أرسل تقرير نشر 15 أكتوبر 2021 أي من الاستعلامين يعطي نتيجة أفضل في الأداء 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 2 اقتباس
0 شرف الدين حفني نشر 15 أكتوبر 2021 أرسل تقرير نشر 15 أكتوبر 2021 المثال الأول أفضل من ناحية الأداء , حيث أن في المثال الأول سيتم فلترة الجدول Orders ليتوافق مع الشرط الموضوع بعد كلمة on ومن ثم إختيار العناصر المناسبة INNER JOIN Orders o on p.ProductID = o.ProductID بينما في الشرط الثاني سيتم إختيار عناصر الجدول orders كلها أولاً ومن ثم تتم عملية الفلترة , مما يعني إختيار عناصر أكثر وعمليات بحث أكثر اقتباس
1 Ahmed Sharshar نشر 15 أكتوبر 2021 أرسل تقرير نشر 15 أكتوبر 2021 الحالة المعروضة لن تفرق في الأداء كثيرا مهما كبر حجم البيانات وذلك لأن الأمر نفسه صغير. وبشكل عام فأن الأداء يعتمد على عدد الصفوف التي يتم العمل عليها وعدد الأعمدة التي تقوم بأرجاعها وهنا لا فرق بين الأثنين لذا لن تجد فرقا في الأداء. وهذا لان خطط الإستعلام لكلاهما واحدة، لذا فإن عدد الصفوف المتأثرة وعدد الأعمدة التي ترجع واحدة، وبشكل عام فأن الخادم sql server سيقوم بتحويلهم لنفس الصورة في النهاية فلا فرق. اما اذا كان الإستعلام يحتوى على بعض الحسابات أو التجميعات ( calculations, aggregations) فإن الطريقة الثانية أفضل بالتاكيد، اما هذة الحالة فلا لانه لا توجد حسابات أو تجميعات. 1 اقتباس
السؤال
سعيد يوسف
أي من الاستعلامين يعطي نتيجة أفضل في الأداء
INNER JOIN
أو
INNER JOIN (SELECT * FROM)
حسب
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.