نوع داده (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
..is of a type that is invalid for use as a key column in an index.
در واقع اختلاف عملکرد زیادی بین این دو نوع وجود ندارد ولی اگر حدس میزنیم که نوع داده مان کمتر از 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 را برای مثال بالا تست کنید و مدت زمان اجرا را مشاهده کنید.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود