هل هناك ميزة في وضع tinyint الحقول عندما أعرف أن القيمة لا تتجاوز 255?

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

سؤال

يجب أن تختار أصغر نوع البيانات الممكنة ، أو إذا أنا تخزين القيمة 1 على سبيل المثال ، لا يهم ما هو عمود نوع بيانات قيمة تحتل نفس حجم الذاكرة?

السؤال هو أيضا, لأنني دائما إلى تحويل واللعب حولها في التطبيق.


التحديث

أعتقد أن varchar(1) varchar(50) هو نفس حجم الذاكرة إذا كانت قيمة "a", اعتقد انه نفس الشيء مع الباحث و tinyint ، وفقا إجابات أنا أفهم أنه ليس هو ؟

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

المحلول

دائما اختيار أصغر نوع البيانات الممكنة.SQL server لا يمكن تخمين ما تريد أقصى قدر من القيمة ، ولكن يمكن تحسين الأداء والتخزين مرة واحدة كنت اقول نوع البيانات.


للإجابة على التحديث:

varchar لا تأخذ فقط الكثير من الفضاء كما يمكنك استخدام و لذلك كنت على حق عندما تقول أن حرف "a" سوف يستغرق 1 بايت (في اللاتينية ترميز) بغض النظر عن كيفية كبيرة varchar المجال الذي تختاره.هذا ليس هو الحال مع أي نوع آخر من مجال في SQL.

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

إذا كنت بداية SQL ثم أنصح مجرد البقاء بعيدا عن حقول varchar إلا إذا كنت تتوقع أن يكون الحقول التي في بعض الأحيان كميات صغيرة جدا من النص في بعض الأحيان كميات كبيرة جدا من النص (مثل بلوق وظيفة).فإنه يأخذ الخبرة أن تعرف متى تستخدم متغير طول الحقول إلى أفضل النتائج و حتى أنا لا أعرف أكثر من مرة.

نصائح أخرى

إنه الأداء النظر خاصة إلى تصميم النظام الخاص بك.بشكل عام ، فإن المزيد من البيانات يمكنك تناسب في صفحة بيانات Sql Server على أفضل أداء.

صفحة واحدة في Sql Server 8k.باستخدام صغيرة رجات بدلا من رجات سوف تمكنك من وضع المزيد من البيانات في صفحة واحدة ولكن عليك أن تنظر في ما إذا كان أو لم يكن يستحق ذلك.إذا كنت تنوي أن تكون في خدمة الآلاف من الزيارات دقيقة, ثم نعم.إذا كان هذا هو مشروع هواية أو شيء من هذا فقط بضع عشرات من المستخدمين سوف نرى أي وقت مضى, ثم لا يهم.

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

تقليديا كل جزء حفظ في حجم الصفحة يعني قليلا من تحسين سرعة:أضيق الصفوف يعني المزيد من الصفوف في كل صفحة ، وهو ما يعني أقل من الذاكرة المستهلكة أقل IO الطلبات ، مما أدى إلى سرعة أفضل.ومع ذلك, مع SQL Server 2008 صفحة ضغط تبدأ الأمور غامض.خوارزمية ضغط قد ضغط 4 بايت رجات مع القيم تحت 255 حتى أقل من البايت.

صف الضغط خوارزميات تخزين 4 بايت الباحث على بايت واحد على القيم تحت 127 (الباحث هو توقيع), 2 بايت القيم تحت 32768 وهلم جرا وهكذا دواليك.

ومع ذلك ، وبالنظر إلى أن لطيفة ضغط الميزات متوفرة فقط على خوادم Enterprise Edition, فمن المنطقي أن تبقى هذه العادة من استخدام أصغر ممكن نوع البيانات.

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