Чрез използване на VARCHAR(MAX) вие всъщност казвате на SQL Server „съхранявайте стойностите в това поле, както виждате най-добре“, след това SQL Server ще избере дали да съхранява стойностите като обикновен VARCHAR или като LOB (Голям обект). По принцип, ако съхранените стойности са по-малки от 8000 байта, SQL Server ще третира стойностите като обикновен VARCHAR вид.
Ако съхранените стойности са твърде големи, тогава колоната може да прехвърли страницата в LOB страници, точно както се прави за други типове LOB (текст , ntext и изображение ) - ако това се случи, тогава са необходими допълнителни четения на страници, за да се прочетат данните, съхранени в допълнителните страници (т.е. има производителност наред), но това се случва само ако съхранените стойности са твърде големи .
Всъщност при SQL Server 2008 или по-нова версия данните могат да препълват към допълнителни страници дори с типовете данни с фиксирана дължина (напр. VARCHAR(3,000) ), обаче тези страници се наричат страници с данни за препълване на редове и се третират малко по-различно.
Кратка версия: от гледна точка на съхранението няма недостатък в използването на VARCHAR(MAX) над VARCHAR(N) за някои N .
(Имайте предвид, че това се отнася и за другите типове полета с променлива дължина NVARCHAR и VARBINARY )
FYI – Вие не можете да създавате индекси на VARCHAR(MAX)код> колони