Was sind die maximalen Zeichen für NVARCHAR (MAX)?

Antworten:

412

Die maximale Größe für eine Spalte vom Typ NVARCHAR(MAX)beträgt 2 GByte Speicherplatz.

Da NVARCHAR2 Bytes pro Zeichen verwendet werden, sind das ca. 1 Milliarde Zeichen.

Leo Tolstojs Krieg und Frieden ist ein Buch mit 1'440 Seiten, das ungefähr 600'000 Wörter enthält - das könnten also 6 Millionen Zeichen sein - und gut aufgerundet ist. Sie könnten also ungefähr 166 Exemplare des gesamten Kriegs- und Friedensbuchs in jede NVARCHAR(MAX)Spalte stecken .

Ist das genug Platz für Ihre Bedürfnisse? :-)

marc_s
quelle
17
Nur eine Kleinigkeit. NVARCHAR verwendet für die meisten Zeichen 2 Bytes. Für Unicode-Zeichen über U + 00FFFF. Es werden vier Bytes verwendet.
Eli Algranti
7
Das ist jenseits des Sparta-Wahnsinns.
MisterGeeky
1
Was entspricht PostgreSQL NVCHAR (MAX)?
Pratik
63

Standardmäßig werden nvarchar (MAX) -Werte genauso gespeichert wie nvarchar (4000) -Werte, es sei denn, die tatsächliche Länge überschreitet 4000 Zeichen. In diesem Fall werden die In-Row-Daten durch einen Zeiger auf eine oder mehrere separate Seiten ersetzt, auf denen die Daten gespeichert sind.

Wenn Sie Daten mit möglicherweise mehr als 4000 Zeichen erwarten, ist nvarchar (MAX) definitiv die empfohlene Wahl.

Quelle: https://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/

Madushan
quelle
12
Es wird auch NICHT empfohlen, wenn Ihre Daten niemals 4000 Zeichen überschreiten, da Indizierungsprobleme auftreten.
HLGEM
Ich halte das für veraltet. Siehe Antwort von @marc_s.
Fabio Milheiro
9

Aus der MSDN-Dokumentation

nvarchar [(n | max )]

Unicode-Zeichenfolgendaten variabler Länge. n definiert die Zeichenfolgenlänge und kann einen Wert zwischen 1 und 4.000 haben. max gibt an, dass die maximale Speichergröße 2 ^ 31-1 Byte (2 GB) beträgt. Die Speichergröße in Bytes beträgt das Zweifache der tatsächlichen Länge der eingegebenen Daten + 2 Bytes

JiNish
quelle
6

Ich denke, tatsächlich nvarchar(MAX)können ungefähr 1070000000 Zeichen gespeichert werden.

Francisco Javier Larios Soto
quelle
Können Sie erklären, woher Sie diese Nummer bekommen und was Sie unter "genau" verstehen? (dh sagen Sie, dass dies keine harte Grenze ist, aber mit mehr Zeichen kann es Probleme geben? Welche Arten von Problemen? Warum?)
Adi Inbar
3
Ich bin nicht sicher, aber ich denke, wenn nvarchar doppelt so viel Speicherplatz wie varchar zum Speichern eines Zeichens verwendet und die maximale Anzahl von Speichern, die von nvarchar (MAX) zum Speichern von Zeichen verwendet werden können, 2 ^ 31-1 => 2147483647 ist, dann 2147483647/2 ist 1073741824. Mit genau meine ich, dass dies keine exakte Zahl ist.
Francisco Javier Larios Soto