سؤال

كنت أخلق جدول في SQL Server CE وأدركت أنه لا يدعم Varchar.

تبحث هذا الأمر، لقد وجدت أن "أعمدة نص غير Unicode (varchar، char، النص) و smallmoney غير مدعومة؛ على الرغم من أن NVARCHAR، NCHAR، NTEXT، والمال مدعومة" كما ذكر في MSDN..

هل هذا صحيح؟ لماذا هذا، بالضبط؟ يبدو أن هذا المدمج ستؤيد قاعدة البيانات أنواع البيانات التي تأخذ أقل بايت لتخزين ... أنا أفترض أنه يستغرق مساحة أكبر لحفظ أحرف Unicode.

ما السبب خلف هذا؟

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

المحلول

ربما على الأرجح لأن نظام التشغيل Windows CE هو Unicode تماما مقرها ويتم تخزين جميع سلاسلها بهذه الطريقة.

نصائح أخرى

أعتقد أنهم كانوا يحاولون تقليل بصمة نشرهم وتبسيط الواجهة. أنه وربما يحاول تجنب الاضطرار إلى نشر المزيد من إصدارات DLLS (UNICODE VS غير Unicode إصدارات).

ونعم صحيح أنهم يدعمون فقط يونيكود.

ولكن هذا لا يعني تلقائيا أنه يستغرق 2 بايت لتخزينها. يمكنك ترميز ذلك في طبقة قاعدة البيانات لتجريب البايت الأول عندما لا تكون هناك حاجة إليها. العديد من محركات قاعدة البيانات تفعل هذا كوسيلة للضغط على Unicode.

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

تستخدم معظم قواعد البيانات المدمجة دائما شكل من أشكال ضغط الطول الرشد عندما تضع بالفعل بايت على القرص من أجل توفير المساحة. الشكل الذي يحدثه لرؤيته عندما يخرج من المحرك نادرا ما يطابق ما يتم تخزينه بالفعل على القرص.

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