ورود

View Full Version : تفاوت تعریف Nvarchar محدود و نامحدود



shahab_ksh
دوشنبه 29 مهر 1387, 22:28 عصر
با سلام

تفاوت این که من یک فیلد رو Nvarchar(MAX ) تعریف کنم یا مثلا Nvarchar (300) چیه؟

آیا فقط قصد محدود کردن وروری هاست یا حجم بانک اطلاعاتی رو هم بزرگ میکنه؟

اگه بزرگ میکنه پس تفاوتی با Varchar نباید داشته باشه درسته؟

HamidNazari
سه شنبه 30 مهر 1387, 00:57 صبح
در SQL Server 7.0 به بالا ، حجم یک رکورد بیشتر از ۸۰۰۰ بایت نمی​تونه باشه . پس در بهترین حالت ، یک رکورد تنها با یک فیلد VARCHAR(8000) و یا NVARCHAR(4000) می​تونیتم داشته باشیم که برای مواردی ظرفیت خیلی کمیه . این شد که در SQL Server 2005 انواع VARCHAR(MAX) و NVARCHAR(MAX) و VARBINARY(MAX) مطرح شدن که توانائی این رو دارن که در Data Pageهای متعدد ۸۰۰۰ بایتی ذخیره بشن و تا ۲ گیگابایت ظرفیت داشته باشن . البته سابقاً انواع داده​ای TEXT و NTEXT هم داشتیم که تو کدنویسی مشکلات زیادی داشتن که حالا دیگه نداریم .

niloofar norouzi
سه شنبه 30 مهر 1387, 07:00 صبح
آیا فقط قصد محدود کردن وروری هاست یا حجم بانک اطلاعاتی رو هم بزرگ میکنه؟

بزرگ نمی شه فقط محدود می کنی

shahab_ksh
سه شنبه 30 مهر 1387, 11:59 صبح
پس یعنی مشکلی پیش نمیاد اگه من تمام فیلد ها رو از نوع Nvarchar(max ) تعریف کنم وقتی محدودیت برام مهم نیست

niloofar norouzi
سه شنبه 30 مهر 1387, 12:51 عصر
نه مشکلی پیش نمی یاد

HamidNazari
سه شنبه 30 مهر 1387, 20:34 عصر
Performance رو پائین میاره ... چون همونطور که گفتم اطلاعات در Data Pageهای مجزا ذخیره میشن و سرهم کردنشون توسط SQL Server کمی زمان بره . مخصوصاً اگه قرار باشه باهاش زیاد سر و کله بزنی ، عملاً سرویس رو سرویس میکنه !!
در هر صورت بر اساس نیاز و تحلیل و طراحی باید تصمیم گرفت از چه Data Typeی استفاده کرد . وگرنه چرا باید با این همه انواع TEXT و NTEXT و CHAR و NCHAR و VARCHAR و NVARCHAR و ... دردسر کشید ؟ ... ورمیداشتن از همون اول یه NVARCHAR(MAX) میذاشتن و دیگر هیچ ! دنیا میشد بهشت .