nvarchar(max) and varchar(max)

by mitkoka 14. Юни 2009 13:27

Има разлика между VARCHAR(1-8000) и VARCHAR(MAX).

 Когато в дадена колона се записват данни от тип  VARCHAR(1-8000) те се записват физически точно по този начин в съответния ред. Но когато колоната съдържа данни от тип VARCHAR(MAX) задкулистно данните се записват като данни от тип TEXT. Ето защо има допълнитна работа когато използваме VARCHAR(MAX) и такъв тип колна трябва да се използва само когато знаем, че данните ще превишат 8000.

VARCHAR(MAX) и NVARCHAR(MAX) не държат данните си в самия ред, а на друго място. В реда има единствено указател към това място. Дефоутно сървърът ще опита да задържи данните в реда, но ако става въпрос за голямо количество ще ги постави на друго място. Това поставяне на данни на място различно от текущия ред ще доведе до допълнителна работа на сървъра и съответно до леко забавяне. Още по темата:http://msdn2.microsoft.com/en-us/library/ms189087.aspx

Разликата между varchar и nvarchar

by mitkoka 23. Февруари 2009 16:06

Varcahar идва от variable-length characte. Това е текстов тип, чиято максимална дължина е 8000 байт. Това е свързано с максималния размер на един ред в таблица.

NVarcahar - N идва от uNicode.  (Защото би било тъпо да се казва UVarchar). NVarchar  не е нищо повече от  Varcahar , който поддържа 2 -у байтови символи, Това означава че всеки един символ в стринга намиращ се в колона от тип NVarchar заема 2 байта място. Тъй като позволенто пространство тук също е 8000 байта. Това означава че използвайки NVarchar може да се събере двойно по малко текст или пък да се събере еднакъв текст, но в едия случй (Varchar) този текст ще заема двойно по - малко място. От друга страна използвайки Varchar не би могло да се записват символи, които не са част от английската азбука като например български букви, китайски яруглифи или нубийски заврънтулки.

Това е една от разликите. По - икономичния Varchar ни ограничава до определени символи.

Една важна добавка към SQL SERVER 2005 са типовете VARCHAR(MAX) и NVARCHAR(MAX). Ако създадете колна от тип VARCHAR(MAX) тя може да съдържа в себе си до 2^31 байта данни, докато колона от тип NVARCHAR(MAX) 1,073,741,823 символа (двойно по - малко сещате се защо).