Qual è il numero massimo di caratteri per NVARCHAR (MAX)?


Risposte:


414

La dimensione massima per una colonna di tipo NVARCHAR(MAX)è 2 GByte di spazio di archiviazione.

Dal momento che NVARCHARutilizza 2 byte per carattere, questo è di ca. 1 miliardo di personaggi.

La guerra e la pace di Leo Tolstoj è un libro di 1'440 pagine, contenente circa 600'000 parole - quindi potrebbero essere 6 milioni di caratteri - ben arrotondato. Quindi potresti inserire circa 166 copie dell'intero libro Guerra e Pace in ogni NVARCHAR(MAX)colonna.

È abbastanza spazio per le tue esigenze? :-)


17
Solo un pignolo. NVARCHAR utilizza 2 byte per la maggior parte dei caratteri. Per i caratteri unicode su U + 00FFFF. Userà quattro byte.
Eli Algranti,

7
Questa è una follia oltre ogni limite.
MisterGeeky,

1
Cos'è PostgreSQL equivalente a NVCHAR (MAX)?
Pratik,

63

Per impostazione predefinita, i valori di nvarchar (MAX) sono memorizzati esattamente come i valori di nvarchar (4000), a meno che la lunghezza effettiva non superi i 4000 caratteri; in tal caso, i dati in riga vengono sostituiti da un puntatore a una o più pagine separate in cui sono archiviati i dati.

Se prevedete che i dati superino probabilmente i 4000 caratteri, nvarchar (MAX) è sicuramente la scelta consigliata.

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


12
Inoltre, NON è consigliato se i tuoi dati non supereranno mai i 4000 caratteri poiché ci sono problemi di indicizzazione.
HLGEM,

Credo che questo sia obsoleto. Vedi la risposta di @marc_s.
Fabio Milheiro,

9

Dalla documentazione MSDN

nvarchar [(n | max )]

Dati stringa Unicode a lunghezza variabile. n definisce la lunghezza della stringa e può essere un valore compreso tra 1 e 4.000. max indica che la dimensione massima di archiviazione è 2 ^ 31-1 byte (2 GB). La dimensione della memoria, in byte, è due volte la lunghezza effettiva dei dati immessi + 2 byte


6

Penso che in realtà nvarchar(MAX)possa memorizzare circa 1070000000 caratteri.


Puoi spiegare dove stai ricevendo quel numero e cosa intendi con "preciso"? (cioè stai dicendo che non è un limite difficile, ma con più personaggi ci possono essere problemi? Che tipo di problemi? Perché?)
Adi Inbar,

3
Non sono sicuro, ma penso che se nvarchar utilizza il doppio spazio rispetto a varchar per memorizzare un carattere e il numero massimo di memoria che può essere utilizzato da nvarchar (MAX) per memorizzare i caratteri è 2 ^ 31-1 => 2147483647, quindi 2147483647/2 è 1073741824. Con precisione intendo che non è un numero esatto.
Francisco Javier Larios Soto,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.