ما هي طرق تحديد الأعمدة غير الضرورية ضمن فهرس التغطية؟

StackOverflow https://stackoverflow.com/questions/1545661

سؤال

ما هي الطرق الموجودة لتحديد الأعمدة الزائدة في تغطية المؤشرات:الأعمدة التي لا يتم البحث عنها أبدًا، وبالتالي يمكن استخراجها في تضمين، أو حتى إزالتها بالكامل دون التأثير على قابلية تطبيق الفهرس؟

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

المحلول

لتوضيح الأمور
فكرة مؤشر التغطية هو أنه يتضمن أيضًا أعمدة لا يمكن البحث عنها (المستخدمة في جملة WHERE وما إلى ذلك) ولكن يمكن تحديدها (جزء من قائمة أعمدة SELECT).

لا يبدو أن هناك أي طريقة سهلة لتأكيد وجود أعمدة غير مستخدمة في فهرس التغطية.لا أستطيع إلا أن أفكر في عملية شاقة أدناه:

  • لفترة زمنية تمثيلية، قم بتسجيل كافة الاستعلامات التي يتم تشغيلها على الخادم (أو على الجدول المطلوب)
  • تصفية (من خلال التعبير العادي) الاستعلامات التي لا تتضمن الجدول الأساسي
  • بالنسبة للاستعلامات المتبقية، احصل على خطة الاستعلام؛تجاهل الاستعلامات التي لا تتضمن الفهرس المعني
  • بالنسبة للاستعلامات المتبقية، أو بالأحرى لكل "قالب" للاستعلام (العديد من الاستعلامات متشابهة ولكن بالنسبة لقيم معايير البحث)، قم بعمل قائمة الأعمدة من الفهرس الموجودة إما في عبارة تحديد أو حيث (أو في JOIN.. .)
  • تعتبر الأعمدة من الفهرس غير الموجودة في تلك القائمة جيدة بشكل إيجابي.

الآن، قد يكون هناك عدد قليل من [الأعمدة المطلوب إزالتها] لأن العملية المذكورة أعلاه لا تتحقق من السياق الذي يُستخدم فيه فهرس التغطية (من الممكن أن يتم استخدامه لتحديد المكان، ولكن لا يزال يتم الوصول إلى الجدول الأساسي أيضًا (على سبيل المثال للوصول إلى الأعمدة غير الموجودة في فهرس التغطية...)

النهج السريري المذكور أعلاه غير جذاب إلى حد ما. قد يكون من الأفضل اتباع نهج تحليلي:

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

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

أو...دون حتى الذهاب إلى التطبيقات: فكر في جميع حالات الاستخدام, وإذا كانت الاستعلامات التي تخدم هذه الحالات لن تستفيد من جميع الأعمدة في الفهرس.إن القيام بذلك يعني أن لديك فكرة جيدة نسبيًا عن انتقائية الفهرس، فيما يتعلق بأعمدته القليلة الأولى.

نصائح أخرى

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

يستخدم التحليل

وتتبع عادة للعثور على مرشحين ل<م> المفقودين المؤشرات، ولكن أنا التخمين أنها يمكن أن تستخدم أيضا لتحليل الاتجاهات الاستخدام.

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