text i ntext są przestarzałe, więc pomińmy je na chwilę. Pozostały trzy wymiary:
- Unicode (UCS-2) a inne niż Unicode:
Nprzed nazwą oznacza Unicode - Stała długość a zmienna długość:
varoznacza zmienną, w przeciwnym razie ustalona - W wierszu a BLOB:
(max)ponieważ długość oznacza BLOB, w przeciwnym razie jest wartością w wierszu
Dzięki temu możesz odczytać znaczenie dowolnego typu:
CHAR(10):jest w rzędzie o stałej długości nie-Unicode o rozmiarze 10NVARCHAR(256):jest Unicode o zmiennej długości w wierszu o rozmiarze do 256VARCHAR(MAX):to BLOB o zmiennej długości niebędący Unicode
Przestarzałe typy text i ntext odpowiadają nowym typom varchar(max) i nvarchar(max) odpowiednio.
Kiedy przechodzisz do szczegółów, znaczenie in-row w porównaniu z BLOB rozmywa się na małych długościach, ponieważ silnik może zoptymalizuj pamięć i wyciągnij BLOB w wierszu lub wepchnij wartość w wierszu do jednostki alokacji „mała BLOB”, ale to tylko szczegół implementacji. Zobacz Organizacja tabel i indeksów
.
Z punktu widzenia programowania wszystkie typy:CHAR , VARCHAR , NCHAR , NVARCHAR , VARCHAR(MAX) i NVARCHAR(MAX) , obsługują jednolity interfejs API ciągów:Funkcje ciągów
. Stare, przestarzałe typy TEXT i NTEXT nie obsługują ten interfejs API, mają oddzielny, zdeperowany, TEKSTOWY interfejs API do manipulowania. Nie należy używać przestarzałych typów.
Typy BLOB obsługują wydajne aktualizacje w miejscu przy użyciu kolumny UPDATE table SET column.WRITE(@value, @offset) składnia.
Różnica między typami o stałej i zmiennej długości znika podczas kompresji wiersza w tabeli. Po włączeniu kompresji wierszy typy o stałej długości i zmiennej długości są przechowywane w tym samym formacie, a końcowe spacje nie są przechowywane na dysku, patrz Implementacja kompresji wierszy . Zwróć uwagę, że kompresja strony oznacza kompresję wierszy.