نوع البيانات الأكثر كفاءة لـ UUID في قاعدة البيانات إلى جانب UUID الأصلي

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

سؤال

ما هو نوع البيانات الأكثر كفاءة لتخزين UUID/GUID في قواعد البيانات التي لا تحتوي على نوع بيانات UUID/GUID أصلي؟2 بيجينت؟

وما هو الكود الأكثر كفاءة (يفضل C#) للتحويل من وإلى GUID إلى هذا النوع؟

شكرًا.

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

المحلول

وانه من الصعب القول ما يمكن أن يكون أكثر فعالية من دون معرفة قاعدة البيانات الذي تستخدمه.

وقائي الاول الميل سيكون لاستخدام عمود binary(16).

وأما بالنسبة لاستخدام تلك القيمة في C #، ونوع System.Guid لديه منشئ يقبل مجموعة byte[]، وToByteArray() أسلوب بإرجاع صفيف بايت.

نصائح أخرى

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

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

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

وإذا نظرنا إلى . NET ارشد الطبقة هناك عدة طرق لتهيئة ارشد:

وارشد (Int32، Int16، Int16، بايت، بايت، بايت، بايت، بايت، بايت، بايت، بايت) ارشد (سلسلة)

وفي حين أنه قد يكون أكثر كفاءة، من الناحية النظرية، لتخزين عدد صحيح في قاعدة بيانات (هل يمكن استخدام بعض الشيء التحول إلى تخزين حقا 4 الأعداد الصحيحة 32 بت .. ولكن كنت قد لحساب هذا من عند تحميل وحفظ كل الوقت. بالإضافة إلى ذلك، ان الامر سيستغرق 4 الحقول في قاعدة البيانات .. أتصور أنه سيكون في نهاية الأمر أقل كفاءة.

وإضافة في استحالة قراءة هذا مباشرة في قاعدة البيانات الخاصة بك لأغراض التصحيح / اختبار، وأنا أقول اليدين باستمرار أنه من الأفضل لتخزين السلسلة. انها فقط حقل 32-حرف (36 إذا قمت بتضمين شرطات)، وأنه من السهل جدا لتحويل. الدليل. ToString () و <لأ href = "http://msdn.microsoft.com/en-us/library/96ff78dc.aspx" يختلط = "نوفولو noreferrer"> جديد ارشد (stringValue)؛

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