سؤال

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

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

المحلول

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

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

لذلك ... يمكنك إنشاء فهرس عندما يكون لديك معلومات تحتاج إلى البحث عنها بشكل متكرر. لا تساعدك الفهارس العادية في البحث عن "الجزئي" مثل الاستعلامات ، ولكن في أي وقت تحتاج إلى الحصول على مجموعة من النتائج حيث يكون للحقل X قيمة (ق) معينة ، فإنها تمنع DBMs من الحاجة إلى "مسح" الجدول بأكمله ، تبحث عن قيم مطابقة.

كما أنها تساعد عندما تحتاج إلى فرز العمود.

شيء آخر يجب وضعه في الاعتبار ؛ إذا سمح لك DBMS بإنشاء فهارس واحدة تحتوي على حقول متعددة ، فتأكد من استكشاف آثار القيام بذلك ، خاصة بـ DBMs. من المحتمل أن يكون الفهرس الذي يتضمن حقول متعددة فقط مفيدًا (أو على الإطلاق) إذا تم استخدام جميع هذه الحقول في استعلام. على العكس من ذلك ، قد لا يكون وجود فهارس متعددة لجدول واحد ، مع حقل واحد لكل فهرس ، مساعدة كبيرة (أو أي) للاستعلامات التي يتم تصفية/الفرز بواسطة حقول متعددة.


لقد ذكرت فهارس النص الكامل و PKS (المفاتيح الأساسية). هذه تختلف عن الفهارس العادية ، على الرغم من أنها غالبا ما تخدم أغراض مماثلة.

أولاً ، لاحظ أن المفتاح الأساسي عادة ما يكون فهرسًا (في MSSQL ، "فهرس متجمع" ، في الواقع) ، ولكن هذا لا يجب أن يكون هو الحال على وجه التحديد. على سبيل المثال ، فإن MSSQL PK هو فهرس متجمع بشكل افتراضي ؛ الفهارس المجمعة خاصة أنها ليست جزءًا منفصلًا من البيانات المخزنة في مكان آخر ، ولكن يتم ترتيب البيانات نفسها في الجدول بالترتيب بواسطة الفهرس المجمع. هذا هو السبب في أن PK شهيرة هو int القيمة التي يتم إنشاؤها تلقائيًا بقيم متتابعة متزايدة. لذلك ، يقوم الفهرس المجمع بفرز البيانات في الجدول على وجه التحديد حسب قيمة الحقل. قارن هذا القاموس التقليدي ؛ يتم طلب الإدخالات نفسها بواسطة "المفتاح" ، وهي الكلمة التي يتم تعريفها.

ولكن في MSSQL (تحقق من وثائق DBMS الخاصة بك للحصول على معلوماتك) ، يمكنك تغيير الفهرس المجمع ليكون حقلًا مختلفًا ، إذا أردت. في بعض الأحيان يتم ذلك على datetime الحقول القائمة.


فهارس النص الكاملة هي أنواع مختلفة من الوحوش بالكامل. يستخدمون بعض المبادئ نفسها ، لكن ما يفعلونه ليس بالضبط نفس الفهارس العادية ، التي أصفها. أيضا: في بعض DBMS ، LIKE الاستفسارات تفعل ليس استخدم فهرس النص الكامل ؛ مطلوب مشغلي الاستعلام الخاص.

تختلف هذه الفهارس لأن نيتها ليست العثور على/فرز القيمة الكاملة للعمود (رقم ، تاريخ ، جزء قصير من بيانات char) ، ولكن بدلاً من ذلك للعثور على كلمات/عبارات فردية ضمن حقل النص (s) يجري فهرستها.

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

نصائح أخرى

هذه الإجابة هي الخاصة بـ Oracle ، لكن النقاط الرئيسية في الإجابات تنطبق على معظم أنظمة قاعدة البيانات العلائقية

كيف تختار وتحسين فهارس أوراكل؟

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