PDA

View Full Version : انتخاب چه نوع فیلدی بهتر است؟



edisoon
جمعه 26 مهر 1387, 12:37 عصر
من یک فیلد Comment در یکی از جداول خود دارم که از نوع NvarChar با طول 250 درنظر گرفته ام ولی در اکثر مواقع مقدار رشته ای که در این فیلد قرار میگیرد زیر 50 کاراکتر و یا صفر کاراکتر است.
حال سئوال من این است که یک رشته که طولش 20 کاراکتر باشد در فیلدی که در دیتابیس با طول 250 کاراکتر درنظر گرفته شده است چگونه ذخیره میشود؟
و آیا اگر این فیلد را از نوع Nvarchar-max درنظر میگرفتم بهتر نبود؟
و سئوال دیگر اینکه اگر Allow Null را در فیلد کاراکتری غیرفعال کنیم و برای فیلدهایی که مقداری در آن ذخیره نمیشود مقدار "" را ذخیره کنیم کار اشتباهیست یا نه؟ و بصورت کلی Null فضای کمتری در دیتابیس اشغال میکند یا یک فضای خالی مثل این : ""

mamizadeh
جمعه 26 مهر 1387, 16:41 عصر
با سلام دوست گرامی
وقتی nvarchar استفاده می کنی یه طول ثابتی sql واسه خودش ور می داره که فکر کنم طولش 2 بایته حالا چه 50 تایی باشه چه 500 تایی البته اگه هیچی ننویسی حد اقل 2 بایت رو ور می داره ولی اگه طول کلماتت بیشتر از 2 بایت باشه به ازای کلماتت طولش افزایش بایت پیدا می کنه
منبع : MSDN

ASKaffash
شنبه 27 مهر 1387, 08:07 صبح
من یک فیلد Comment در یکی از جداول خود دارم که از نوع NvarChar با طول 250 درنظر گرفته ام ولی در اکثر مواقع مقدار رشته ای که در این فیلد قرار میگیرد زیر 50 کاراکتر و یا صفر کاراکتر است.
حال سئوال من این است که یک رشته که طولش 20 کاراکتر باشد در فیلدی که در دیتابیس با طول 250 کاراکتر درنظر گرفته شده است چگونه ذخیره میشود؟
و آیا اگر این فیلد را از نوع Nvarchar-max درنظر میگرفتم بهتر نبود؟
و سئوال دیگر اینکه اگر Allow Null را در فیلد کاراکتری غیرفعال کنیم و برای فیلدهایی که مقداری در آن ذخیره نمیشود مقدار "" را ذخیره کنیم کار اشتباهیست یا نه؟ و بصورت کلی Null فضای کمتری در دیتابیس اشغال میکند یا یک فضای خالی مثل این : ""

سلام
درست عمل کرده اید و مشکلی نیست عدد 250 شما اشاره دارد که حداکثر رشته ورودی 250 بایت که 500 بایت را اشغال میکند ولی وقتی شما 20 بایت ارسال میکنید برای آن رکورد تنها 40 بایت اشغال میشود (2 برابر برای UniCode است)