سؤال

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

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

المحلول

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

إذا تم ترك البعض منها فيمكن أن يسبب بعض المشكلات، انظر هذا الرابط لطرق إزالتها.

نصائح أخرى

لست متأكدًا من عام 2000، ولكن في عام 2005، تعد الفهارس الافتراضية وكائنات قاعدة البيانات بشكل عام كائنات تم إنشاؤها بواسطة DTA (مستشار ضبط قاعدة البيانات)

يمكنك التحقق مما إذا كان الفهرس افتراضيًا عن طريق تشغيل هذا الاستعلام:

SELECT  *
FROM    sys.indexes
WHERE   is_hypothetical = 1

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

أدى بحث Google عن "الفهارس الافتراضية لخادم SQL" إلى إرجاع الملف المقالة التالية كنتيجة أولى.يقتبس:

الفهارس الافتراضية وكائنات قاعدة البيانات بشكل عام هي ببساطة كائنات تم إنشاؤها بواسطة DTA (مستشار ضبط قاعدة البيانات)

الفهارس الافتراضية هي تلك التي تم إنشاؤها بواسطة "مرشد ضبط قاعدة البيانات".بشكل عام، وجود عدد كبير جدًا من الفهارس ليس فكرة رائعة ويجب عليك فحص خطط الاستعلام الخاصة بك لتقليص تلك التي لا يتم استخدامها.

من sys.indexes:

is_hypothetical     bit     

1 = Index is hypothetical and cannot be used directly as a data access path. 
    Hypothetical indexes hold column-level statistics.

0 = Index is not hypothetical.

ويمكن أيضًا إنشاؤها يدويًا باستخدام ملفات غير موثقة WITH STATISTICS_ONLY:

CREATE TABLE tab(id INT PRIMARY KEY, i INT);

CREATE INDEX MyHypIndex ON tab(i) WITH STATISTICS_ONLY = 0;
/* 0 - withoud statistics -1 - generate statistics */

SELECT name, is_hypothetical
FROM sys.indexes
WHERE object_id = OBJECT_ID('tab');

ديسيبل <>عرض كمان

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