نکته :: تفاوت بین نوع داده (VARCHAR(max و (VARCHAR(n
درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من
    تخفیف های وب سایت
    همه تخفیف ها

    عضویت در

    کانال تلگرام

    توسینسو

    اطلاعات مطلب
      مدرس/نویسنده
      سحر بیرامی
      امتیاز: 671
      رتبه:362
      0
      3
      1
      11

      ویدیوهای پیشنهادی

      تفاوت بین نوع داده (VARCHAR(max و (VARCHAR(n

      تاریخ 16 ماه قبل
      نظرات 3
      بازدیدها 262
      نوع داده (VARCHAR(Max) - NVARCHAR(max) - VARBINARY(max از Sql 2005 به جای نوع TEXT – NTEXT - IMAGE معرفی شده است . همه این نوع داده های تا حداکثر 2 گیگابات اطلاعات را میتوانند ذخیره کنند به جز نوع داده NVARCHAR که حداکثر تا یک گیگابات اطلاعات یونیکد شده را میتواند در خود جای دهد .یک سوالی که ممکن است پیش بیایید این هست که چرا با وجود اینکه نوع VARCHAR میتواند تا دو گیگابایت اطلاعات را ذخیره کند مقدار n در نوع (VARCHAR(n حداکثر 8000 است و مقدار بیش از این خطا میدهد ؟؟ دلیل این هست که اطلاعات در صفحات 8 کیلوبایتی ذخیره می شوند (8192 بایت) . از این مقدار 96 بایت برای ذخیره اطلاعات هدر صفحه مصرف میشود و مابقی 8096 بایت باقی مانده برای ذخیره دیتا - افست –سربار - استفاده میشود. در واقع مقدار 8000 بایت باقی مانده را شما میتوانید برای ذخیره داده استفاده کنید .تفاوت ها:

      نحوه تعریف


      DECLARE @Name VARCHAR(Max)= 'Sahar'         
      DECLARE @Name VARCHAR(50)= 'Sahar' 
      

      حداکثر ظرفیت

      VARCHAR(Max)  :  2 147 483 647 Byte - 2 Giga Byte
      VARCHAR(n)  :  8000 byte  
      

      قابلیت ایندکس گذاری


      • (VARCHAR(Max : قابلیت ایندکس گذاری ندارد . در صورتی سعی کنید ایندکس ایجاد کنید با خطای زیر مواجه خواهید شد :
      • ..is of a type that is invalid for use as a key column in an index.
        
      • (VARCHAR(n : امکان ایندکس گذاری بر روی این نوع داده وجود دارد.

      نحوه ذخیره سازی اطلاعات


      • (VARCHAR(Max : یک سطر داده در صفحات ۸ کیلوبایتی ذخیره میشوند تا زمانی که سر ریز اتفاق بیافتد . در واقع اگر میزان اطلاعات یک سطر بیش از مقدار تعیین شده یک صفحه باشد مابقی اطلاعات به فرمت Text قدیمی ذخیره میشوند
      • (VARCHAR(n : مشابه سایر دیتا ها در صفحات 8 کیلوبایتی

      چه موقع استفاده کنیم


      • (VARCHAR(Max: وقتی دیتاییی که قصد ذخیره آن را داریم بیش از 8000 بایت فضا اشغال میکند مثل یک فایل متن . برای داده هایی حجیم که به آنها گاها CLOB یعنی Character Large Object هم گفته میشود.
      • (VARCHAR(n: در واقع اگر ما بدانیم نوع داده ای که داریم کمتر از 8000 بایت فضا اشغال میکند مثل آدرس و نام و نام خانوادگی و...

      در واقع اختلاف عملکرد زیادی بین این دو نوع وجود ندارد ولی اگر حدس میزنیم که نوع داده مان کمتر از 8000 بایت فضا اشغال میکند خواهشا از نوع (varchar(n استفاده کنیم ، مثال زیر را میتوانید برای مقایسه دو نوع داده اجرا کنید و مدت زمان اجرای دستور را ببینید مدت زمان اجرا زمانی که نوع داده (Varchar(50 تعریف شده است به مراتب کمتر است :
      DECLARE @FirstName VARCHAR(MAX), @COUNT INT=0, 
              @StartTime DATETIME = GETDATE()
      WHILE(@COUNT < 1000000)
      BEGIN
         SELECT @FirstName = 'Sahar', @COUNT = @COUNT +1
      END
      SELECT DATEDIFF(ms,@StartTime,GETDATE()) 'Time Taken in ms'
      GO 6
      
      (VARCHAR(MAX و (VARCHAR(50 را برای مثال بالا تست کنید و مدت زمان اجرا را مشاهده کنید
      برچسب ها
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      • مرسی از آموزش خوبت.
      • مرسی از آموزش خوبت.
      • خواهش میکنم غزاله جان

      برای ارسال نظر ابتدا به سایت وارد شوید