سؤال

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

My issue is that we allow the user to input one of two methods:
 1. Enter the Number:
    or
 2. Enter a Number like:

الخيار الأول يؤدي مثل الحلم بينما الخيار الثاني يقوم بسحب أوقات الاستعلام لدينا من 6 ثوان إلى دقيقتين.

بالإضافة إلى هذا ؛ هل يعرف أي شخص أي مقالات جيدة ومناقشات و Vidoes وما إلى ذلك .. على تحسين عبارات SQL لـ Teradata Optimizer؟

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

المحلول

نظرًا لأن العمود يتم تعريفه على أنه varchar وأنت تستخدم المشغل المتطابق ، فإنك تزيل إمكانية استخدام PI للوصول إلى AMP الفردي. تذكر أن المهام الأولى الأولى هي توزيع البيانات عبر AMPs في النظام. نظرًا لأنك تستخدم المشغل الذي يشبه مقابل PI ، يجب على المحسن إجراء عملية "All AMP" لإرضاء المشغل المتطابق.

WHERE MyPIColumn LIKE '123%'

تجزئة القيم التي تبدأ بـ 123 علبة وستنتهي في أمبيرات متعددة.

WHERE MyPIColum = '123'

سوف يضع التجزئة من 123 كل سجل على نفس أمبير. سيكون الاستعلام عن "123" دائمًا عملية AMP واحدة.

قد تساعد الإحصائيات المتعلقة بهذا في تقديرات الصف ولكن من المحتمل ألا تقضي على عملية "All AMP".

  1. هل هذا PI فريد أو غير متوفرة؟
  2. لماذا تم اختيار نوع البيانات ليكون شخصية على الرقم؟ على الرغم من أن GT (E) أو LT (E) من المحتمل أن يؤدي إلى نفس "التشغيل".
  3. هل يشارك هذا PI من قبل الجداول الأخرى في النموذج لتسهيل استراتيجيات الانضمام المحلية AMP؟

نصائح أخرى

سأخذه هذا الرقم مفهرسة؟ يستخدم Teradata التجزئة للفهرسة ، لذلك سيؤدي المساواة إلى استخدام الفهرس ، في حين أن مثل SCHENT سيؤدي إلى فحص كامل الجدول.

إذا كانت لديك حاجة حقيقية لاستخدامها ، فليس هناك الكثير مما يمكنك القيام به. شيء واحد يمكنك تجربته هو استخدام Substr(Number, 1, 3) = '123' عوضا عن Number LIKE '123%'. لقد حصلت على تحسينات في الأداء الصغيرة من هذا في الماضي ، لكن لا أتوقع أي شيء مذهل.

ستحتاج إلى فهرس فهرس / فهرس مسبق ، على سبيل المثال ، وأيضًا بحث اثنين من التحليل.

على سبيل المثال ، عند إدخال "12345" إلى قاعدة البيانات الخاصة بك ، قم بإنشاء رابط من "1" ، "12" ، "123" ، "234" ... إلخ إلى "12345".

ثم ، عند استخدام شيء مثل "123 **" ، ابحث عن "123" من جدول البحث والسعي إلى السجل "12345"

إذا كنت تقوم بمقارنة Varchar مباشرة ، أي

Column LIKE 'VALUE'

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

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