Usando VARCHAR(MAX)
in pratica stai dicendo a SQL Server "memorizza i valori in questo campo come vedi meglio", SQL Server sceglierà quindi se archiviare i valori come un normale VARCHAR
o come LOB (oggetto grande). In generale, se i valori archiviati sono inferiori a 8.000 byte, SQL Server tratterà i valori come un normale VARCHAR
digita.
Se i valori memorizzati sono troppo grandi, la colonna può riversarsi fuori dalla pagina nelle pagine LOB, esattamente come fanno per altri tipi LOB (text
, ntext
e image
). .
Infatti in SQL Server 2008 o versioni successive i dati possono traboccare in pagine aggiuntive anche con i tipi di dati a lunghezza fissa (ad es. VARCHAR(3,000)
), tuttavia queste pagine sono chiamate pagine di dati di overflow delle righe e sono trattate in modo leggermente diverso.
Versione breve: dal punto di vista dell'archiviazione non vi è alcuno svantaggio nell'utilizzo di VARCHAR(MAX)
su VARCHAR(N)
per alcuni N
.
(Nota che questo vale anche per gli altri tipi di campo a lunghezza variabile NVARCHAR
e VARBINARY
)
Cordiali saluti - non puoi creare indici su VARCHAR(MAX)
colonne