PDA

View Full Version : سوالی در مورد نوع داده nvarchar(max) ؟



nice_boy_a
یک شنبه 19 مرداد 1393, 10:59 صبح
سلام دوستان.
واسه طراحی دیتابیس، اگه همه ی فیلدهای جداول از نوع nvarchar(max) باشه (البته به غیر از کلید اصلی و فیلدهای محاسباتی) مشکلی پیش میاد؟
مثلا به جای nvarchar(200) که معمولا واسه نام،نامو خانوادگی،نام پدر،شماره شناسنامه،تلفن و ... استفاده میشه از nvarchar(max) استفاده کنیم!

یه سوال دیگه: این size نوع nvarchar(max) که زده -1 دقیقا یعنی چقد فضا میگیره؟ به اندازه کاراکترهای وارد شده؟
و تفاوت nvarchar(max) با مثلا nvarchar(200) ؟
ممنون.

Davidd
یک شنبه 19 مرداد 1393, 11:29 صبح
سلام. سوال خوبيه. nvarchar(max) يا varchar(max) كلا ذخيره سازيشون فرق داره. اول اينكه تا 2 گيگ ميتونه ذخيره كنه ( در حالي كه varchar و nvarchar حداكثر 8000 بايت ميتونن) . دوم اينكه يه سري محدوديت دارن مثلا روي ستون هاي بيشتر از 900 بايت نميشه ايندكس تعرف كرد سوم اينكه اين فيلدها روي هارد در page هاي جداگانه از Page مربوط به ركورد ذخيره ميشن بنابراين سرعت افت ميكنه (هر سطر يا ركورد جدول در يك page ذخيره ميشه ولي اين ستون ها در pageهاي جدا). بنابراين وقتي nvarchar(200) كفايت ميكنه به هيج وجه نبايد از max استفاده كرد. max بيشتر براي ذخيره سازي فايل و يا رشته هاي خيلي بزرگ استفاده ميشه.

nice_boy_a
یک شنبه 19 مرداد 1393, 16:50 عصر
فرضا جدولی 1000 تا رکورد داشته باشه و همه ی فیلد هاش max باشن،
حالا اگه بخوایم فیلد ها رو تغییر بدیم به مثلا nvarchar(200) مشکلی پیش نمیاد(با در نظر گرفتن اینکه طول داده ها کمتر از 200 کاراکتر هست) ؟ و هر رکورد در یک page قرار میگیره ؟

nice_boy_a
یک شنبه 02 شهریور 1393, 11:27 صبح
کسی از دوستان نیست راهنمایی کنه ؟