أفضل طريقة لتخزين العلامات في جدول خادم SQL؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

ما هي أفضل طريقة لتخزين العلامات للسجل؟مجرد استخدام حقل varchar؟ماذا عن عند اختيار الصفوف التي تحتوي على العلامة x؟استخدم عامل التشغيل مثل؟

شكرًا!

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

المحلول

يعتمد على شيئين:
1) كمية العلامات/السجلات الموسومة
2) سواء كان لديك رأي ديني في التطبيع أم لا :-)

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

نصائح أخرى

بعض الأفكار والاختبارات فقط لأجلك: http://tagged.pui.ch/post/37027746608/tagsystems-performance-tests

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

الميزة هنا هي أنه يمكنك بسهولة الاستعلام حسب العلامة والسجل والحفاظ على جدول العلامات بشكل منفصل (على سبيل المثال.ماذا لو تغير اسم العلامة؟).

استخدم جدول العلامات مع أصغر مفتاح أساسي مسموح به.إذا كان هناك أقل من 255 علامة، فاستخدم بايت (tinyint) أو كلمة (smallint).كلما كان المفتاح أصغر، كان الفهرس الموجود على المفتاح الخارجي في الجدول الرئيسي أصغر وأسرع.

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