هل تغطية الفهرس مكررة البيانات؟
-
21-09-2019 - |
سؤال
لنفترض أن لدينا هذا الفهرس
CREATE INDEX IX_test ON t1(c1) INCLUDE (c2)
هل هذا يعني أنه سيكون لدينا C2 في كل من صفحة الفهرس وصفحة البيانات الفعلية؟ السؤال الحقيقي هو - هل يعني تحديث C2 أن SQL Server سيتعين عليه تحديث ix_test وصف البيانات الفعلي (الفهرس المجمع)؟
المحلول
نعم ، تمامًا مثل تضمين أي حقل في فهرس يكرر البيانات. ويجب تحديث جميع الفهارس (المؤشرات) التي تتضمن حقلًا عندما يتغير الحقل.
لذلك عند تمديد فهرس لتغطية استعلام (أو أكثر من 1) ، فإنك تكرر البيانات. إنها دائمًا تجارة.
نصائح أخرى
الفهرس المجمع هو جزء من الجدول ، لذلك يتم تحديث الجدول نفسه فقط. إذا كان فهرسًا غير متكامل ، فستكون الإجابة نعم.
تقوم Clustered بإنشاء فهرس يحدد فيه الترتيب المنطقي للقيم الرئيسية الترتيب الفعلي للصفوف المقابلة في الجدول. يحتوي الجزء السفلي ، أو الورقة ، على مستوى الفهرس المجمع على صفوف البيانات الفعلية للجدول. يُسمح لجدول أو عرض فهرس واحد مجمعة في وقت واحد. لمزيد من المعلومات ، راجع هياكل الفهرس المجمعة.
// تحرير: أرى أنني فهمت ذلك بطريقة أخرى. كانت النقطة هو أنه إذا قمت بتحديث عمود ، فيجب عليك تحديثه: 1) الفهرس المجمع 2)
هناك دائمًا سؤال عند تصميم DB ما/عدد الفهارس التي يجب إنشاؤها - إنها حالة توازن بين القراءة والكتابة (وما هو مطلوب حقًا).