سؤال

لنفترض أن لدينا هذا الفهرس

CREATE INDEX IX_test ON t1(c1) INCLUDE (c2)

هل هذا يعني أنه سيكون لدينا C2 في كل من صفحة الفهرس وصفحة البيانات الفعلية؟ السؤال الحقيقي هو - هل يعني تحديث C2 أن SQL Server سيتعين عليه تحديث ix_test وصف البيانات الفعلي (الفهرس المجمع)؟

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

المحلول

نعم ، تمامًا مثل تضمين أي حقل في فهرس يكرر البيانات. ويجب تحديث جميع الفهارس (المؤشرات) التي تتضمن حقلًا عندما يتغير الحقل.

لذلك عند تمديد فهرس لتغطية استعلام (أو أكثر من 1) ، فإنك تكرر البيانات. إنها دائمًا تجارة.

نصائح أخرى

الفهرس المجمع هو جزء من الجدول ، لذلك يتم تحديث الجدول نفسه فقط. إذا كان فهرسًا غير متكامل ، فستكون الإجابة نعم.

تقوم Clustered بإنشاء فهرس يحدد فيه الترتيب المنطقي للقيم الرئيسية الترتيب الفعلي للصفوف المقابلة في الجدول. يحتوي الجزء السفلي ، أو الورقة ، على مستوى الفهرس المجمع على صفوف البيانات الفعلية للجدول. يُسمح لجدول أو عرض فهرس واحد مجمعة في وقت واحد. لمزيد من المعلومات ، راجع هياكل الفهرس المجمعة.

// تحرير: أرى أنني فهمت ذلك بطريقة أخرى. كانت النقطة هو أنه إذا قمت بتحديث عمود ، فيجب عليك تحديثه: 1) الفهرس المجمع 2)

هناك دائمًا سؤال عند تصميم DB ما/عدد الفهارس التي يجب إنشاؤها - إنها حالة توازن بين القراءة والكتابة (وما هو مطلوب حقًا).

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