ورود

View Full Version : اشغال حافظه متغیرها



hojjat_gh
شنبه 30 شهریور 1387, 22:21 عصر
با سلام
سوال من اینه که ایا یک متغیر تعریف شده اگه خالی وارد بشه ایا بازم حافظه اشغال میکنه ؟
مثلا فرض کنید یه متغیر nvarchar(20) به عنوان نام کاربر در جدول تعریف کنیم وسپس موقع اینسرت کردن مقدار تکست باکسش رو خالی بذاریم ایا در جدول بازم 20 بایت حافظه توسط این فیلد اشغال میشه؟

niloofar norouzi
شنبه 30 شهریور 1387, 23:01 عصر
من فکر می کنم در صورتی که nvarchar انتخاب بشه حافظه ای اشغال نمی شه
اما اگه nchar باشه نیاز به حافظه داره

golden_behzad
شنبه 30 شهریور 1387, 23:00 عصر
در صورتی فضایی اشغال نمی شود که مقدار null در فیلد قرار گیرد . پس در موقع insert کردن چک کنید در صورت خالی بودن null ذخیره شود.

hojjat_gh
یک شنبه 31 شهریور 1387, 09:55 صبح
با تشکر از دوستان
من یه سوال دارم:
1)اگه متغیری مثلا nvarchar(20) باشه ومن تو تکسباکس مربوط به این متغیر مثلا 5 کارکتر وارد کنم ایا با توجه به اینکه اون متغیر nvarchar(20) تعریف شده ایا بازم 5 بایت از حافظه اشغال میشه؟
منظورم اینه که 20بایت اشغال نمیشه؟

niloofar norouzi
یک شنبه 31 شهریور 1387, 11:30 صبح
بله همون 5 بایت ذخیره می شه

کم حوصله
یک شنبه 31 شهریور 1387, 11:30 صبح
در صورتی که فیلد شما از نوع varchar or nvarchar باشد ملاک عمل میزان دیتایی است که در فیلد ذخیره می شود ولی اگر از نوع char or ncahr باشد ملاک عمل میزان تعریفی شما می باشد و مابقی فضای خالی با Space پر می شود
در نتیجه اگر فیلد شما nvarchar(20) باشد و 5 کاراکتر وارد کنید میزان فضای اشغال شده 5 بایت می باشد ولی اگر فیلد شما nchar(20) باشد و 5 کاراکتر وارد کنید میزان فضای اشغال شده 20 بایت می باشد