الفهارس الفردية مقابل فهارس الحقول المتعددة

StackOverflow https://stackoverflow.com/questions/209691

  •  03-07-2019
  •  | 
  •  

سؤال

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

هل تؤثر إضافة ثلاثة فهارس على أداء العمليات الأخرى؟ربما يتم استخدام المفاتيح بشكل غير متكرر بحيث لا نريد التأثير على الأداء في هذه الحالة.

  • البريد الإلكتروني، مفتاح1
  • البريد الإلكتروني، key1، key2
  • البريد الإلكتروني، key1، key2، key3

الفكرة الأخرى هي أن نضيف مفتاحًا واحدًا.

  • البريد الإلكتروني، key1، key2، key3

ثم استخدم دائمًا جميع المفاتيح الثلاثة في البحث (على سبيل المثال.key1 = mykey وkey2 فارغان وkey3 فارغان)

أنظر أيضا

بالضبط وظيفة مكررة

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

المحلول

أنا شخصياً أوصي بهذا النهج.

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

ثم حاول الطريق الآخر وكرر.

يعتمد الأمر حقًا على بياناتك.

لقد تمكنت عادةً من التعامل مع فهرس تغطية واحد، بدءًا من المفتاح الأكثر استخدامًا أولاً.

نصائح أخرى

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

إذا قمت بوضع ثلاثة فهارس فقط، وكانت بسيطة نسبيًا، فلن تواجه مشكلة.

يمكن أن أكون مخطئا، ولكن أعتقد أنه إذا أضفت:

  • البريد الإلكتروني، key1، key2، key3

كمؤشر، ستستخدمه معظم قواعد البيانات إذا كان الاستعلام الخاص بك يستخدم "email"، "email/key1"، "email/key1/key2"، وما إلى ذلك ...دون أن يطلب منك تحديد قيم خالية للحقول المفقودة.

كما قال آخرون، ستستخدم معظم قواعد البيانات الفهرس "a، b، c" عند البحث عن a وa وb أو a وb وc فقط.وغالبًا ما يستخدمون فهرسًا واحدًا فقط لكل جدول.لذا فإن إضافة "email, key1, key2, key3" ربما يكون الأفضل.

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

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