سؤال

لقد أنشأت طريقة عرض مفهرسة:

CREATE VIEW LogValueTexts WITH SCHEMABINDING AS
SELECT ISNULL(LRVS_SLOG_ID*256+LRVS_IDX,0) AS ID,LRVS_VALUE AS Value
FROM dbo.LRVS_LogRecordedValues WHERE LEN(LRVS_VALUE)>4

CREATE UNIQUE CLUSTERED INDEX IX_LogValueTexts ON LogValueTexts (ID)

على SQL 2005 Standard SP3 ، يتطلب الأمر إلى الأبد ملء فهرس النص الكامل على هذا العرض لأن فهرسة النص الكامل ينفذ الاستعلام التالي لكل صف في العرض:

SELECT COLUMN FULLTEXTALL FROM[dbo].[LogValueTexts] WHERE COLUMN FULLTEXTKEY = @p1

أفترض ذلك COLUMN FULLTEXTALL و COLUMN FULLTEXTKEY في الواقع Value و ID, ، ولكن هذا ما يعرضه SQL Server Profiler. تكمن المشكلة في أن خطة الاستعلام تستخدم فحص فهرس متجمع على مدى حوالي 11 مترًا/1 جيجابايت من البيانات لأنه لا يستخدم الفهرس في العرض. لقد حاولت إنشاء دليل خطة لهذا الاستعلام ، ولكن نظرًا لأنه ليس استعلام T-SQL قياسيًا ، فإنه لا يسمح به (Incorrect syntax near the keyword 'FULLTEXTKEY').

هل هناك طريقة للحصول على فهرس النص الكامل هذا للعمل بخلاف:

  • الترقية إلى SQL 2008 (أو SQL 2005 Enterprise) حيث تعمل بشكل جيد.
  • إنشاء معرف فريد وفهرس تغطية على الجدول الأساسي.

قد تتطلب الترقية وقت التوقف عن الخادم وربما تراخيص SQL Server الجديدة مع إنشاء المعرف الفريد وفهرس التغطية من شأنه أن يضيع مساحة كبيرة لأن مجموعة فرعية فقط من صفوف 11M تحتاج إلى فهرسة النص الكامل (LRVS_VALUE في كثير من الأحيان NULL أو لديه قيمة نصية قصيرة جدا).

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

المحلول

أنا لا أعرف بياناتك ؛ لماذا لا يمكنك وضع فهرس النص الكامل على الجدول الأصلي؟ يمكنك إضافة العمود المحسوب إلى بنية الجدول الخاصة بك. وبهذه الطريقة لن يكون لديك عملية إعادة بناء الفهرس (أعتقد أن هذا هو سبب الفحص الخاص بك)

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

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

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