Jakie są maksymalne znaki dla NVARCHAR (MAX)?

Odpowiedzi:

413

Maksymalny rozmiar kolumny typu NVARCHAR(MAX) wynosi 2 GB pamięci.

Od NVARCHAR używa 2 bajtów na znak, jest to ok. 1 miliard znaków.

Lew Tołstoj w War and Peace jest książka 1'440 strona, zawierająca około 600'000 słowy - tak, że może być 6 milionów znaków - dobrze zaokrąglone w górę. Możesz więc umieścić w każdej z nich około 166 kopii całej książki Wojna i pokójNVARCHAR(MAX) kolumnie ”.

Czy to wystarczy dla twoich potrzeb? :-)

marc_s
źródło
17
Po prostu drobiazg. NVARCHAR używa 2 bajtów dla większości znaków. Dla znaków Unicode powyżej U + 00FFFF. Użyje czterech bajtów.
Eli Algranti
7
To szaleństwo poza Spartą.
MisterGeeky,
1
Co to jest PostgreSQL równoważny NVCHAR (MAX)?
Pratik,
63

Domyślnie wartości nvarchar (MAX) są przechowywane dokładnie tak samo, jak wartości nvarchar (4000), chyba że faktyczna długość przekracza 4000 znaków; w takim przypadku dane w wierszu są zastępowane wskaźnikiem do co najmniej jednej oddzielnej strony, na której są przechowywane dane.

Jeśli przewidujesz, że dane mogą przekraczać 4000 znaków, zdecydowanie zalecany jest nvarchar (MAX).

Źródło: https://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/

Madushan
źródło
12
NIE jest również zalecane, jeśli Twoje dane nigdy nie przekroczą 4000 znaków, ponieważ występują problemy z indeksowaniem.
HLGEM
Uważam, że to jest przestarzałe. Zobacz odpowiedź od @marc_s.
Fabio Milheiro,
9

Z dokumentacji MSDN

nvarchar [(n | max )]

Dane łańcuchowe Unicode o zmiennej długości. n określa długość łańcucha i może mieć wartość od 1 do 4 000. max wskazuje, że maksymalny rozmiar pamięci to 2 ^ 31-1 bajtów (2 GB). Rozmiar pamięci, w bajtach, jest dwa razy większy niż rzeczywista długość wprowadzonych danych + 2 bajty

JiNish
źródło
6

Myślę, że faktycznie nvarchar(MAX)może przechowywać około 1070000000 znaków.

Francisco Javier Larios Soto
źródło
Czy możesz wyjaśnić, skąd bierzesz ten numer i co rozumiesz przez „dokładnie”? (tzn. czy mówisz, że to nie jest twardy limit, ale przy większej liczbie postaci mogą być problemy? Jakie problemy? Dlaczego?)
Adi Inbar,
3
Nie jestem pewien, ale myślę, że jeśli nvarchar używa podwójnej spacji niż varchar do przechowywania znaku, a maksymalna liczba pamięci, którą może używać nvarchar (MAX) do przechowywania znaków, to 2 ^ 31-1 => 2147483647 2147483647/2 to 1073741824. Dokładnie rozumiem, że nie jest to dokładna liczba.
Francisco Javier Larios Soto