سؤال

حسنًا ، أنا في حيرة من أمري بشأن طرق عرض SQL Server المفهرسة (باستخدام 2008)

لقد حصلت على طريقة عرض مفهرسة تسمى

ignmentDetail

عندما أنظر إلى خطة التنفيذ

select * from AssignmentDetail

يوضح خطة التنفيذ لجميع الفهارس الأساسية لجميع الجداول الأخرى التي من المفترض أن تتجريد العرض المفهرس.

أعتقد أن خطة التنفيذ woul تكون ببساطة مسح فهرس متجمع لـ PK_ASSIGNMENTDETAIL (اسم الفهرس المجمع لرأيي) لكنه لا يفعل ذلك.

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

أي رؤية سيكون موضع تقدير كبير

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

المحلول

يعد Enterprise Edition من SQL Server ذكيًا بما يكفي للبحث عن طرق العرض المفهرسة والاستفادة منها عند وجودها. ومع ذلك ، إذا لم تكن تقوم بتشغيل Enterprise Edition ، فستحتاج إلى إخباره بشكل صريح باستخدام العرض المفهرس ، مثل هذا:

select * 
from AssignmentDetail WITH (NOEXPAND)

نصائح أخرى

الهدف من العرض المفهرس هو عدم تسريع

SELECT * FROM MyView

الشيء الذي سيساعدك على زيادة الأداء هو فهرس على عمود من العرض نفسه ، مثل.

SELECT * FROM MyView WHERE ViewColumnA = 'A' and ViewColumnB = 'B'

لذلك يمكنك الحصول على فهرس على ViewColumna و ViewColumnB والذي يمكن أن يوجد بالفعل على جداول مختلفة.

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