در نسخه SQL Server 2000 هنگام طراحی یک جدول برای داده های متنی طولانی از دیتا تایپ های text و ntext استفاده می کردیم ولی از نسخه SQL Server 2005 مایکروسافت دیتا تایپ های جدیدی را به اسکیوال سرور اضافه کرد. بعضی از این دیتا تایپ های جدید عبارتند از : varchar(max) و nvarchar(max) و varbinary(max) می باشند. اگر شما در گوگل جمله Deprecate Data Type SQL server را جستجو نمایید و وارد سایت مایکروسافت شوید دراین صورت با پیغام زیر مواجه خواهید شد.
شرکت مایکروسافت از سال 2005 به تمامی کاربران اسکیوال سرور اعلام کرده است که از دیتا تایپ های varchar(max) و nvarchar(max) و varbinary(max) استفاده کنند و اعلام کرده است که کاربران به جای دیتا تایپ text از varchar(max) و سپس به جای دیتا تایپ ntext از nvarchar(max) و سپس به جای دیتا تایپ Image از varbinary(max) استفاده کنید.
دلایل عدم استفاده از دیتا تایپ های text و ntext و image :
1 – دیتا تایپ های text و ntext و image ، فضای خیلی بیشتری روی دیسک ، نسبت به حالتی که از دیتا تایپ های varchar(max) و nvarchar(max) و varbinary(max) استفاده کرده اید ، به خود اختصاص می دهند.
2 – از لحاظ performance ایی، دیتا تایپ های text و ntext و image ، IO بیشتری را به خود اختصاص میدهند ، نسبت به حالتی که از دیتا تایپ های varchar(max) و nvarchar(max) و varbinary(max) استفاده کرده اید.
3 – از لحاظ performance ایی، دیتا تایپ های text و ntext و image ، زمان اجرای بیشتری را به خود اختصاص میدهند ، نسبت به حالتی که از دیتا تایپ های varchar(max) و nvarchar(max) و varbinary(max) استفاده کرده اید.
تذکر خیلی خیلی مهم : بر حسب تجربیاتی که بنده به دست آورده ام تا جایی که ممکن است از دیتا تایپ های varchar(max) و nvarchar(max) و varbinary(max) استفاده نکنید مگر اینکه واقعا مجبور به استفاده از دیتا تایپ های varchar(max) و nvarchar(max) و varbinary(max) بشوید. به عنوان مثال اگر مثلا طول رشته شما زیر4000 کاراکتر است شما می توانید از nvarchar(4000) استفاده کنید. علت این است که optimizer اسکیوال سرور جهت تخصیص فضا در رم سرور ، زمانی که از دیتا تایپ های های varchar(max) و nvarchar(max) استفاده می کنید، اشتباه فضا را تخمین می زند.
نویسنده مقاله : غلامحسین عبادی
دیدگاه شما