سؤال

SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
    FROM  PRACOWNICY
    GROUP BY NR_DZIALU
    HAVING NR_DZIALU = 30

أو

SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
    FROM PRACOWNICY
    WHERE NR_DZIALU = 30
    GROUP BY NR_DZIALU
هل كانت مفيدة؟

المحلول

وهذه النظرية (نظرية أعني SQL ستاندرد ) يقول ان WHERE يقيد مجموعة النتائج قبل أن تعود الصفوف وبصعوبات يقيد نتيجة تعيين بعد جلب كافة الصفوف. فأين هو أسرع. على المتوافقة مع SQL القياسية في DBMSs في هذا الصدد، لا تستخدم إلا بصعوبات حيث لا يمكن وضع شرط على WHERE (مثل الأعمدة المحسوبة في بعض RDBMSs).

ويمكنك أن ترى مجرد خطة التنفيذ على حد سواء وتحقق لنفسك، لا شيء للفوز أن (قياس للاستعلام معينة في بيئة معينة مع البيانات الخاصة بك.)

نصائح أخرى

وقد تعتمد على المحرك. الخلية على سبيل المثال، وينطبق بصعوبات آخر تقريبا في سلسلة، وهذا يعني أن هناك مجالا تقريبا أي لتعظيم الاستفادة. من دليل :

<اقتباس فقرة>   

ويتم تطبيق البند بعد ما يقرب من الماضي، قبل وترسل عناصر إلى العميل، مع عدم وجود الأمثل. (يتم تطبيق LIMIT بعد).

وأعتقد أن هذا السلوك هو نفسه في معظم محركات قواعد البيانات SQL، ولكن لا يمكنني ان اضمن ذلك.

والاستعلامات اثنين وتعادل والخاص DBMS الاستعلام محسن <م> يجب الاعتراف بهذا وإنتاج إنتاج خطة الاستعلام نفسها. فإنه لا يجوز، ولكن الوضع بسيط إلى حد ما للاعتراف، لذلك أتوقع أي نظام حديث - حتى سايبيس - للتعامل معها

وينبغي أن تستخدم شروط الحاجة إلى تطبيق الشروط على وظائف مجموعة، وإلا فإنها يمكن mvoed في حالة WHERE. فمثلا. إذا كنت تريد أن تقييد الاستعلام الخاص بك إلى المجموعات التي لديها COUNT (DZIALU)> 10، مثلا، قد تحتاج لوضع شرط في بصعوبات لأنه يعمل على الجماعات، وليس الصفوف الفردية.

وأتوقع جملة WHERE سيكون أسرع، ولكن من الممكن انها تريد تحسين لنفسه تماما.

والقول انهم تحسين لا يأخذ حقا السيطرة وقول الكمبيوتر ما يجب القيام به. وأود أن نتفق على أن الفائدة من وجود ليس بديلا للفقرة مكان. وجود لها استخدام خاص ليتم تطبيقها على مجموعة من أين شيء من هذا القبيل وهو مبلغ كان يستخدم () وتريد للحد من مجموعة النتائج لتظهر جماعات الوحيدة وجود مبلغ ()> من 100 في حد ذاته. وبعد أن يعمل على مجموعات، حيث يعمل على الصفوف. هم التفاح والبرتقال. ذلك حقا، لا ينبغي أن تقارن كما هي مختلفان تماما.

وكل البيانات سوف يكون لها نفس الأداء كما SQL Server غير ذكي بما فيه الكفاية لتحليل كل من نفس البيانات في خطة مماثلة.

وهكذا، لا يهم إذا كنت تستخدم WHERE أو بصعوبات في الاستعلام الخاص بك.

ولكن، من الناحية المثالية يجب عليك استخدام جملة WHERE نحويا.

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