سؤال

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

هل كانت مفيدة؟

المحلول

ويعتمد على RDBMS. يجب مقارنة خطط التنفيذ لكلا استفسار.

في تجربتي مع أوراكل 10 و 11، وخطط التنفيذ هي ذاتها على الدوام.

نصائح أخرى

والمبدأ الأول هو "الدولة الاستعلام بدقة". والمبدأ الثاني هو "دولة الاستعلام ببساطة وبوضوح" (وهو المكان الذي عادة ما جعل الخيارات). والثالث هو "الدولة الاستعلام لذلك سوف نقوم بمعالجة بكفاءة".

إذا نظم إدارة قواعد البيانات ومع معالج الاستعلام جيدة، تصاميم الاستعلام تعادل يجب أن يؤدي إلى خطط الاستعلام التي هي نفسها (أو كفاءة على الأقل على قدم المساواة).

كان

وأعظم الإحباط بلدي على استخدام الخلية لأول مرة كيف الواعي كان علي أن أكون في توقع محسن. بعد تجربة طويلة مع أوراكل و SQL Server، ينفورميكس، وغيرها من المنتجات نظم إدارة قواعد البيانات، ونادرا جدا ما يتوقع أن تشغل نفسي مع مثل هذه القضايا. من الأفضل الآن مع أحدث إصدارات الخلية، لكنه ما زال شيء أنا في نهاية المطاف تحتاج إلى الاهتمام في كثير من الأحيان مع الآخرين.

والأداء الحكمة، ليس لديهم أي اختلاف في معظم محركات DB الحديثة.

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

وإذا كان ذلك ممكنا، ودائما في محاولة لجعل الانضمام الاستفسارات وتصفية للبند ON، بدلا من WHERE (على الرغم من أنه ينبغي أن تكون هي نفسها، كما هي الأمثل المحركات الحديثة لهذا).

ونظريا كل فرعي يمكن تغيير على استفسار الانضمام.

وكما هو الحال مع أشياء كثيرة، فإنه يعتمد. - مدى تعقيد هي فرعي - في استعلام عدد المرات التي يتم تنفيذ فرعي

وأنا في محاولة لتجنب الاستعلامات الفرعية كلما استطعت. وخصوصا عندما تتوقع مجموعات نتائج كبيرة أبدا استخدام الاستعلامات الفرعية - في حال تم تنفيذ فرعي لكل عنصر من مجموعة النتائج

ورعاية، أليكس

ودعونا نتجاهل تأثير على الأداء في الوقت الراهن (كما ينبغي لنا إذا كنا ندرك أن "من السابق لأوانه الأمثل هو أصل كل شر").

واختر ما يبدو أكثر وضوحا وأسهل للمحافظة عليه.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top