أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

تحسين أداء استعلامات النص الكامل في SQL Server

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

اضغط هنا لرابط المقالة باللغة الانجليزية2549443
الموجز
توضح هذه المقالة طريقة لتحسين أداء الاستعلامات التي تستخدم دالات التقييم بحث نص كامل (مثل CONTAINSTABLEو يحتوي على ) والتي أيضا تصفية البيانات من Microsoft SQL Server. على سبيل المثال، يعمل هذا الأسلوب على تحسين أداء الاستعلام التالي:
select * from dbo.ftTest where CONTAINS(TextData, '"keyword"') and CDate > @date
هذا الأسلوب يتيح لك تصميم الاستعلام ومخطط جدول فهرس النص الكامل في مثل هذه طريقة أن محرك بحث نص كامل تصفية النتائج قبل إرسالها إلى مشغل العلائقية. لذلك، ليس لديه مشغل العلائقية لتصفية مجموعة بيانات كبيرة.
معلومات أخرى
عندما تقوم بإنشاء استعلام بحث نص كامل أن يؤثر أداء الاستعلام هو كمية البيانات التي يجب معالجة محرك بحث نص كامل قبل المتبقية، عامل مبدأ يتم إرسال البيانات إلى مشغل العلائقية. في SQL Server، يمكنك تحسين أداء الاستعلام عن طريق تصفية الصفوف مبكرا لتقليل عدد الصفوف التي يجب أن يتم معالجتها لاحقاً.

في إصدارات SQL Server التي تم إصدارها من قبل SQL Server 2008، محرك بحث نص كامل إرجاع كافة الصفوف التي تطابق مصطلح بحث، ومن ثم تطبيق مشغل العلائقية أية عوامل تصفية. تم إجراء تحسينات على هذا السلوك في SQL Server 2008 وفي SQL Server 2008 R2 وفي عام 2012 ملقم SQL. ومع ذلك، من الصعب استخدام هذه التحسينات لأن يتم تنظيم فهارس النص الكامل البحث بشكل مختلف تماما من فهارس قاعدة البيانات. بالإضافة إلى ذلك، محرك بحث نص كامل ومشغل العلائقية تعمل بشكل مختلف تماما. لذلك، يستخدم الأسلوب الذي توضحه هذه المقالة الدالة تابليفالويد (TVF) لتصفية الصفوف مبكرا وتقليل عدد الصفوف التي يجب أن يتم معالجتها لاحقاً.

على سبيل المثال، خطة الاستعلام التالي بإرجاع الصفوف التي تطابق سلسلة بحث يحتوي على 131051. بالإضافة إلى ذلك، يقوم عامل تشغيل صلة في الخطة تصفية إضافية باستخدام بحث فهرس.
Rows StmtText -------------------- -----------------------------------------------------------------------------------------------------------1167 select CDate, ID from dbo.fttest where contains (c2, '"create"') and CDate> '08/05/2019' 1167 |--Merge Join(Left Semi Join, MERGE:([FTSdb].[dbo].[fttest].[ID])=(FulltextMatch.[docid]), RESIDUA5858 |--Sort(ORDER BY:([FTSdb].[dbo].[fttest].[ID] ASC)) 5858 | |--Clustered Index Seek(OBJECT:([FTSdb].[dbo].[fttest].[clidx1]), SEEK:([FTSdb].[131051 |--Table-valued function 
ومع ذلك، إذا تضمن الاستعلام عمود المفتاح فهرس النص الكامل الفريد كدالة تقييم، محرك بحث نص كامل استخدام دالة التقييم لتصفية النتائج على مستوى النص الكامل. في هذه الحالة، إرجاع TVF كثير أصغر كمية من البيانات قبل يجب تطبيق تصفية إضافية. على سبيل المثال، الاستعلام التالي يحدد القيم الخمس التي يجب أن يتطابق مع حالة c2، و TVF بإرجاع النتائج التي تتطابق مع القيم خمسة فقط:
Rows StmtText -------- ---------------------------------------------------------------------------------------------------------------------------------5 select CDate, ID from dbo.fttest where contains (c2, '"create"') and CDate > '08/05/2019' and ID in ( 654051, 644051, 649106, 465, 105)5 |--Nested Loops(Left Semi Join, OUTER REFERENCES:([FTSdb].[dbo].[fttest].[ID])) 5 |--Index Seek(OBJECT:([FTSdb].[dbo].[fttest].[idx1]), SEEK:([FTSdb].[dbo].[fttest].[ID]=(105) OR ...5 |--Table-valued function
قدرة محرك بحث نص كامل لخفض القيم المستخدمة بواسطة مفتاح فهرس فريد يعد أساسا للأسلوب التالي.

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

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

ثم، ترجمة دالة تقييم نطاق لدالة تقييم على المفتاح معرف. على سبيل المثال، "x<>< y"="" range="" predicate="" can="" be="" translated="" to="" the="" "(x*2^32="">< id="">< y*2^32)"="" predicate.="" because="" the="" translated="" predicate="" is="" a="" predicate="" on="" the="" full-text="" key,="" the="" predicate="" will="" be="" pushed="" down="" into="" the="" full-text="" streaming="" table-valued="" functions="" (stvf).="" this="" behavior="" effectively="" performs="" searches="" within="" the="" date="">

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 2549443 - آخر مراجعة: 03/22/2013 08:00:00 - المراجعة: 2.0

Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Enterprise Evaluation, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Enterprise

  • kbmt KB2549443 KbMtar
تعليقات
;did=1&t="> mp;t=">