سؤال

في الآونة الأخيرة، كنت أحاول تحسين هذا الاستعلام

UPDATE Analytics
SET UserID = x.UserID
FROM Analytics z 
INNER JOIN UserDetail x ON x.UserGUID = z.UserGUID

تظهر خطة التنفيذ المقدرة 57٪ على تحديث الجدول و 40٪ على مباراة التجزئة (الإجمالية). فعلت بعض الطفولات التي جاءت ورأت موضوع الانضمام إلى تلميحات. لذلك أضفت حلقة تلميح لانضمام Inner و Wa-Zham! تعرض خطة التنفيذ الجديدة 38٪ على تحديث الجدول و 58٪ على الفهرس يسعى.

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

  1. يمكن للشخص من فضلك قل لي لماذا تطبيق حلقة تلميحات لجميع استفساراتي هي فكرة سيئة. قرأت في مكان ما أن الانضمام الحلقة هو طريقة الانضمام الافتراضية للحصول على optimiser الاستعلام ولكنها تعذر التحقق من صحة البيان؟
  2. متى تشترك تلميحات المستخدمة؟ عندما يضرب SH * T المروحة والشبح المغشفي أليس في المدينة؟
  3. ما هو الفرق بين حلقة، التجزئة ودمج تلميحات؟ الدول BOL التي تندمج تبدو أبطأ ولكن ما هو تطبيق كل تلميح؟

شكرا على وقتك ومساعدة الناس!

أنا أركيز SQL Server 2008 BTW. الإحصائيات المذكورة أعلاه هي خطط التنفيذ المقدرة.

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

المحلول

يمكن للشخص من فضلك قل لي لماذا تطبيق حلقة تلميحات لجميع استفساراتي هي فكرة سيئة. قرأت في مكان ما أن الانضمام الحلقة هو طريقة الانضمام الافتراضية للحصول على optimiser الاستعلام ولكنها تعذر التحقق من صحة البيان؟

لأن هذا يسلب محسن الفرصة للنظر في طرق أخرى يمكن أن تكون أكثر كفاءة.

متى تشترك تلميحات المستخدمة؟ عندما يضرب SH * T المروحة والشبح المغشفي أليس في المدينة؟

عندما يكون توزيع البيانات (الذي يجعل المحسن قراراته) منحرفة شديدة والإحصائيات ليست قادرة على تمثيلها بشكل صحيح.

ما هو الفرق بين حلقة، التجزئة ودمج تلميحات؟ الدول BOL التي تندمج تبدو أبطأ ولكن ما هو تطبيق كل تلميح؟

هذه خوارزميات مختلفة.

  1. LOOP يتم اختراق الحلقات: لكل سجل من الجدول الخارجي، يتم البحث في الجدول الداخلي للمباريات (باستخدام فهرس المتاحة). الأسرع عندما مجرد جزء صغير من السجلات من كلا الجدولين يفي JOIN و ال WHERE الظروف.

  2. MERGE فرز كلا الجداول يتم عبورها في ترتيب الفرز، تخطي السجلات التي لا مثيل لها. الأسرع ل FULL JOINS وعندما يتم فرز كل من السجلات بالفعل (من عمليات الفرز السابقة أو عند استخدام مسار الوصول الفهرس)

  3. HASH بناء طاولة تجزئة في التخزين المؤقت (الذاكرة أو tempdb) من أحد الجداول ويبحث عنه لكل سجل من الآخر. أسرع إذا كان الجزء الكبير من السجلات من أي جدول يطابق WHERE و JOIN شرط.

نصائح أخرى

تظهر خطة التنفيذ المقدرة 57٪ على تحديث الجدول و 40٪ على مباراة تجزئة (إجمالية). فعلت بعض الطفولات التي جاءت ورأت موضوع الانضمام إلى تلميحات. لذلك أضفت حلقة تلميح لانضمام Inner و Wa-Zham! تعرض خطة التنفيذ الجديدة 38٪ على تحديث الجدول و 58٪ على الفهرس يسعى.

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

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